2012-07-31 76 views
0

我有一個本地分支master,並跟蹤兩個遠程分支masterdev-me。同時,另一位開發人員擁有自己的本地master,並跟蹤相同的遠程master和他自己的專用遠程分支dev-other遠程分支合併和重新組合

不時,我們分別各自從自己的本地master推送到遠程Dev分支(即dev-medev-other)。然後,我們要將我們的遠程dev-x分支合併到遠程master分支中。

我想做到以下幾點:

  1. 我們的任合併他的遠程dev-x分支到遠程分支master

  2. 其他人變基從這個合併遠程master分支到自己的遠程dev-x分支。

  3. 同一個人從步驟2)合併回到遠程master分支。

這是一個正確的方法嗎?

+0

只是爲了澄清我。在第2步中,您可以通過將dev-x提交放在合併的主設備上進行重新設置,對吧?如果是這樣,我沒有看到問題。 Dev1也可以將他/她的分支合併到遠程主服務器,然後Dev2將他/她的分支合併到Dev1合併的結果中 – 2012-07-31 23:12:56

+0

@AndréOriani,是的,事實確實如此,rebase步驟從遠程'master'合併更改並應用於遠程'dev-x'分支的更改。 – skyork 2012-08-01 02:38:02

回答

-1

你太過於複雜了。將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 

您可以替換在這種情況下,底墊合併,只是使用了「他得到了自己的第一個」決定提交順序的方法。

0

您沒有正確使用分支。看看我的帖子,看看你不應該關注什麼dev有什麼主人和主要分支。你應該專注於正在進行的分支機構或功能分支工作,並使用其他部門來管理他們的整合:

http://dymitruk.com/blog/2012/02/05/branch-per-feature/