[英]GitHub version control not working as expected
底部的代码
我正在GitHub上使用一个私有存储库作为我和合作伙伴之间的版本控制,但是我的方法遇到了一些困难。 我已经写了一些bash脚本来简化流程。 本质上,我设想了三种bash脚本:获取最新(GL),签出(CKO)和提交(CM)。 我们都建立了目录结构,如usr/documents/opsys/
并以相同的方式在我们自己的独立计算机上初始化了git repo。
cd usr/documents/opsys/
git init
git remote add origin https://YOURUSER:YOURPW@github.com/louis-krueger/OpSys.git
git pull origin master
我的想法是能够登录到我们的机器并运行
cd usr/documents/opsys/
进入目录后,我打算让我们共享/拥有共同之处。 这里有bash脚本。运行ls
返回以下内容:
CKO CM GL README.md testkill xinu-hw3
这个想法行得通,我能够“ GL”,在当前工作期间签出一个工作分支,然后在完成后可以签入对分支的更改。 然后,我手动合并了我的个人作品,并删除了无效分支。 在尝试向我的伙伴展示之前,它的工作方式就像我想要的一样。 我认为主要问题在于我的最新消息。 登录并将工作目录切换到opsys/
我们希望能够运行./GL,并且目录中所有不在最新master提交中的内容都应从本地计算机上删除,而ls opsys/
应该看起来像您期望从理论上的“ ls起源大师”那里得到什么
CKO CM GL README.md xinu-hw3
我以为testkill
会消失,但是没有。
归根结底,理想情况下这将是我设想的工作流程(ASCII图形)
Day 1
AM Noon 3am(stuck here)
me ----function1.c---------------------
/
master ------/------------shared unmodified files--
\
partner \ -------function2.c-----------
Day 2
3am morning (**action here, see below)
me --(f1)---------------\
\
master --unmodified common----|--all common---master---------
/
partner --(f2)---------------/
**操作:完成单独的工作后,我希望能够将分支手动合并回主服务器,以便下次登录时可以使用./GL和BAM,当GL检查时,我们都看到相同的内容高手。 最好两个分支都消失(或是否有办法将它们剪下来并存储在棚屋后面?……存档)。
需要(批评和建议== true)时,当我们彼此之间远程工作时,我们必须有一种快速的方法来共享工作。
代码段
#!/bin/bash
# @author Louis Krueger - 01/2016
#
# Get latest script
#
REMOTE_VERIFY="git remote -v"
echo "Git Latest"
echo "Please enter username:"
read user
if [ -n "$user" ]; then
echo "enter pw:"
read pw
else
echo "username is nothing, exiting..."
exit 1;
fi
if [ -n REMOTE_VERIFY ]; then
git remote set-url origin https://$user:$pw@github.com/louis-krueger/Opsys.git
else
git remote add origin https://$user:$pw@github.com/louis-krueger/OpSys.git
fi
git pull origin master
echo "$USER up-to-date"
#!/bin/bash
# @author Louis Krueger - 01/2016
# Check out/create branch for current work
#
echo "Ready to work? Checking out branch"
echo "Please enter branch name:"
read branch
if [ -n "$branch" ]; then
echo "creating branch!"
else
echo "invalid branch name, exiting..."
exit 1;
fi
git checkout -b $branch
git push origin $branch
echo "new branch ($branch) has been created"
#!/bin/bash
# @author Louis Krueger - 01/2016
#
# Commit branch script
#
error="0"
echo "Are you sure you would like to commit and switch to master?(y/n)"
read confirm
if [ $confirm = "y" ]&&[ $error="0" ]; then
echo "enter commit message:"
read message
if [ -n "$message" ]&&[ $error="0" ]; then
echo "enter branch name:"
read branch
if [ -n "$branch" ]; then
git pull
git add ./
git commit -m "$message"
else
error="1"
fi
else
error="1"
fi
else
error="1"
fi
if [ "$error" = "1" ]; then
echo "You seem unsure Sire. Perhaps its time to get some fresh air... exiting. No changes have been made"
exit 1;
fi
git push origin $branch
echo "switching to master"
git checkout master
echo "your branch ($branch) has been commited to the repo, contact admin for master&branch merge"
登录并将工作目录切换到
opsys/
我们希望能够运行./GL,并且该目录中任何不在最新master提交中的内容都应从本地计算机上删除...
执行此操作的命令是:
git fetch;
git reset --hard origin/master;
git fetch
从远程检索存储库的最新副本,并且git reset --hard origin/master
将存储库中的所有文件重置为该状态,破坏所有更改。
注意:这不会删除未跟踪的文件; 为此,在git reset
之前添加rm -rf *
。 如果您的存储库包含点文件,则还需要在rm
命令中说明它们(请注意不要删除.git
!)。
另外,您也可以rm opsys/
和git clone https://YOURUSER:YOURPW@github.com/louis-krueger/OpSys.git
。 这将丢弃所有本地文件,并为您提供存储库的全新副本,但是如果您的存储库很大,则可能会很慢。
在完成单独的工作之后,我希望能够手动将分支合并回主服务器。
最好两个分支都消失...
要将分支合并到master中,只需git checkout master
然后git merge branchname
。 然后,您可以使用git branch -d branchname
删除本地分支。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.