你太過於複雜了。將git中的所有內容都視爲本地操作,並忽略其他人,並將遠程回購視爲共享存儲區域。
聽起來像(如果我有你的權利)你們每個人都在主人的工作,但同時推動起源/主和起源/開發的東西。這有效,但可能會令人困惑。如果你在主人工作,推到主人。如果你想推到dev-something,工作在本地副本dev-something。
,因爲它聽起來就像你擁有了它,如果要合併的所有遠程的東西,這樣做:
git fetch --all
git checkout master
git merge origin/master origin/dev-me origin/dev-other
[resolve conflicts]
git push origin master:master
如果你決定使用底墊中,你需要在每個遠程分支重訂到主順序的,而給你一個線性的歷史,並不真正代表平行發展的現實。另外,您需要確定哪些變化是「第一次」。
我會建議,如果你們每個人都在本地dev-whatever分支工作,並且專門推送到該分支的上游版本會更好。當你想讓代碼進入master時,簽出master的本地副本,合併你的本地副本dev-whatever,並將你的本地主服務器備份。正是如此:
git checkout dev-whatever
git fetch --all
git merge origin/dev-whatever
[hack hack hack]
git commit -a
git push origin dev-whatever:dev-whatever
[decide you want to integrate what you've got into master]
git checkout master
git merge dev-whatever
git push origin master:master
如果你們倆這樣做,那麼你將各自在整合自己的更改。如果您的同事已經推,你推他/她自己的變化合並,你的推會失敗。不用擔心,你只需要在這一點上做的是:
git fetch --all
git merge origin/master
[resolve conflicts]
git push origin master:master
您可以替換在這種情況下,底墊合併,只是使用了「他得到了自己的第一個」決定提交順序的方法。
只是爲了澄清我。在第2步中,您可以通過將dev-x提交放在合併的主設備上進行重新設置,對吧?如果是這樣,我沒有看到問題。 Dev1也可以將他/她的分支合併到遠程主服務器,然後Dev2將他/她的分支合併到Dev1合併的結果中 – 2012-07-31 23:12:56
@AndréOriani,是的,事實確實如此,rebase步驟從遠程'master'合併更改並應用於遠程'dev-x'分支的更改。 – skyork 2012-08-01 02:38:02