底端代码
我正在使用GitHub上的私有回购作为我和合作伙伴之间的版本控制,我在方法上遇到了一些困难。我编写了一些bash脚本,作为简化流程的一种方式。本质上,我设想了三个bash脚本: get最新(GL)、签出(CKO)和commit (CM)。我们都设置了这样的目录结构,usr/documents/opsys/,并以同样的方式在我们自己的独立机器上初始化了一个git。
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和目录中没有在最新主提交中的任何内容都应该从本地机器中删除,而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签出主服务器时都会看到相同的情况。最好是这两个分支都消失了(或者是否有方法将它们削减并存储在shed?...archive后面)。
需要(批评和建议,==真),我们必须有一个快速的方式分享工作,同时远程工作彼此。
EOT
代码段
总帐
#!/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"CKO
#!/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"发布于 2016-02-13 07:42:55
在我们登录并将我们的工作目录切换到
opsys/之后,我们希望能够运行./GL和目录中没有在最新主提交中的任何内容,应该从本地机器中删除.
执行此操作的命令如下:
git fetch;
git reset --hard origin/master;git fetch从远程检索存储库的最新副本,git reset --hard origin/master将存储库中的所有文件重置为该状态,从而销毁所有更改。
注意:这不会删除未跟踪的文件;要做到这一点,请在rm -rf *之前添加一个git reset。如果存储库包含dotfile,则还需要在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删除本地分支。
https://stackoverflow.com/questions/35375026
复制相似问题