2014-03-31 93 views
1

我明白,如果我準備好與遠程主合併一個分支,我需要做的:Git的變基和git合併

  1. git的結帳「我的分支」

  2. git的重訂主(因爲我想要簡單的歷史記錄+我的變化足夠小)。但是,這將與我的當地主人,而不是原產主,是正確的?

  3. git的結帳主

  4. 混帳合併「我的分支」 - 這將做到快進合併和完成的過程。

但是,如何做到與遠程主相同的合併?我在互聯網上看不到任何明確的解釋。我不能僅在3d步驟上籤出原始大師。 我錯過了什麼?

回答

3

的遠程主機是遠程回購標識爲master的任何東西。每當你從origin遠程獲取,遠程的master作爲你的origin/master(在你的remotes裁判)承諾的git標籤。

更新遠程倉庫引用的方法是推送到它(它也發送任何提交或任何其他需要的)。所以:

git checkout master  # or however you want to get `master` current with origin 
git pull     # ... 
git checkout mybranch 
git rebase master 
git checkout -B master # you know it's going to --ff, so just move the ref 
          # or, you could `git checkout master; git merge mybranch` 
git push origin master # push the new commits to the remote's `master` 
+0

因此,無論我做什麼,我需要'git push origin master'將所有內容應用到遠程存儲庫,對嗎?有沒有可能的衝突? –

+0

這就是它。 (編輯:「非常多」是我的極度正確;你也可以在遠程倉庫中從你的倉庫中取貨 - 如果遠程倉庫實際上是一個同事,那麼你可能認爲這種方式並不是那麼不常見。倉庫之間的任何層次結構都是_entirely_ conventional ) – jthill

+0

否,除非其他人在此期間推送到遠程主人,否則不會發生衝突。 – jthill

3

您可以在主產地的頂底墊簡直像這樣

git rebase origin/master 

你也可以跳過3和4,簡單的推你衍合分支原點/主

git push origin my_branch:master 
+0

我應該在git rebase origin/master之後像第4步一樣進行合併嗎?如果是的話,那究竟如何? –

+0

你的第二個建議不符合遠程倉庫所有者的要求,所以我需要通過rebase –

+0

來做,我無法想象,倉庫所有者可以控制你的本地分支命名。通過執行'git rebase origin/master',可以確保服務器端的快速合併。直接將'my_branch'推到'origin/master'上會很好,並且仍然會產生線性歷史記錄。 –