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分支的原因是因为我们假设从早期的拉动中出现了。谢谢你的答案!
答案 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的主分支。