git推送和分布式工作流程

时间:2011-10-14 11:42:50

标签: git

Alice和Bob正在尝试处理同一个项目。这是我们到目前为止所做的。

鲍勃:

mkdir myproject
cd myproject
echo "Hello" > readme.txt
git init
git add readme.txt
git commit -m "Initial Commit"

爱丽丝:

git init
git remote add bob ssh://bob/home/bob/projects/myproject
git pull bob
git checkout remote/bob/master -b bobsMaster
echo "Hello again" >> readme.txt
git add readme.txt
git commit -m "Improving readme"
git push bob bobsMaster

现在这就是我们陷入困境的地方。推动成功,但我不知道Alice的提交已经消失。当Bob从他的git log分支中键入master时,Alice的提交无处可寻。

我们是否以完全错误的方式处理分布式工作流程? Alice和Bob应该如何在同一个分支上一起工作?请注意,我们没有中心位置来托管我们的存储库,因此我们希望完全分布式工作。

修改

我们将按照建议使用仅拉动工作流程。我们没有在Bob的回购中发现bobsMaster分支的原因是因为我们假设从早期的拉动中出现了。谢谢你的答案!

4 个答案:

答案 0 :(得分:2)

Bob应该创建一个bobsMaster分支。如果您想将bobsMaster推送到Bob的master分支,请使用以下命令:

git push bob bobsMaster:master

在你的工作流程中,鲍勃和爱丽丝从别人的回购中获取更好,因为不建议推销非裸仓。

答案 1 :(得分:1)

您将更改推送到bobsMaster而不是master。因此鲍勃必须合并

git checkout master
git merge bobsMaster

答案 2 :(得分:1)

关于“遗失提交”:

git log --branches

应该足以让你看到Alice的提交(因为它们是在不同的分支“bobsMaster”中完成的,而不是你的master')

答案 3 :(得分:1)

提交被推送到bobsMaster存储库中名为bob的新远程分支(该分支由git push bob bobsMaster创建)。

该命令中的最后一个参数指定远程refspec - 如果在远程端找不到它,则会创建它。 bob存储库只有一个分支(master),因此通过推送到bobsMaster,您在Bob的回购中创建了该分支。

您应该使用git push bob master将更改推送到Bob的主分支。