2011-10-14 21 views
4

愛麗絲和鮑勃正試圖在同一個項目上工作。這是迄今爲止我們所做的。git推送和分佈式工作流程

鮑勃:

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 

現在,這是我們堅持。推送成功,但我不知道愛麗絲的提交已經過去了。當Bob從他的master分支中鍵入git log時,Alice的提交無處可尋。

我們是否以完全錯誤的方式介紹了分佈式工作流? Alice和Bob應該如何在同一個分支上一起工作?請注意,我們沒有中央位置來託管我們的回購,因此我們希望完全分發。

編輯:

我們將與拉唯一的工作流程去的建議。我們沒有發現鮑勃回購中的bobsMaster分支的原因是因爲我們認爲這是因爲做了較早的拉動而出現的。感謝您的答案!

回答

2

鮑伯應該有一個bobsMaster分支建立。如果你想推bobsMaster Bob的master分支使用這樣的:

git push bob bobsMaster:master 

在您的工作流程是更好的是Alice和Bob拉其他的回購,作爲推到非裸露的回購協議是不推薦。

1

您將更改推送到bobsMaster而不是master。因此,鮑勃必須合併

git checkout master 
git merge bobsMaster 
+0

鮑勃沒有一個名爲bobsMaster的分支。你是否建議bob將Alice添加爲遠程並從遠程/ alice/bobsMaster合併?如果是這樣,這是否意味着愛麗絲的推動是不必要的? –

+0

不,愛麗絲將'bobsMaster'拖入Bobs存儲庫,因此在那之後它就存在。查看CharlesBs的答案。他推了'bobsMaster:master',這意味着他把_local_'bobsMaster'推到_remotes_'主人'。如果你忽略遠程分支名稱,git假定'bobsMaster' =>'bobsMaster:bobsMaster' – KingCrunch

1

關於「失蹤承諾」:

git log --branches 

應該夠你看到Alice的提交

1

(因爲他們比你「master」不同的分支「bobsMaster」已經完成)提交被推送到bob存儲庫中的一個名爲bobsMaster的新遠程分支(該分支由git push bob bobsMaster創建)。

該命令中的最後一個參數指定remote refspec - 如果在遠程端找不到它,它將被創建。 bob存儲庫只有一個分支(master),所以通過推送到bobsMaster您在Bob的回購庫中創建了該分支。

您應該使用git push bob master將更改推送到Bob的主分支。