2012-08-30 62 views
0

我不知道爲什麼在臨Git的書(Apress出版2009年),第3章中的例子是:使用Git,修補程序分支應該與開發分支合併還是應該以其他方式進行?

  1. 一切都致力於在master分支現在,已經被推到生產
  2. 創建一個iss53分行的發展一個功能,添加了一些臨時更改,並承諾。
  3. 一個熱修復程序是必需的,所以切換到master分支,並創建一個hotfix分支
  4. 修正錯誤(如對技術支​​持的電子郵件地址的拼寫錯誤),並承諾,推動生產
  5. 切換到master分支與hotfix分支合併
  6. (可選)刪除hotfix分支

就在這一點上,我不知道爲什麼這本書會去master分支,並做了合併與iss53分支。這實際上不會使主分支處於中間狀態嗎?如果需要另一個修補程序,那麼主服務器不適合做修復程序,我們必須手動選擇合併之前的提交。不應該合併,轉到iss53分支,並與hotfix分支合併,以便將來的版本中也會出現什麼問題?

更新:實際上,本書假定iss53工作完成,並進行最後的合併。但是如果iss53的工作還沒有完成,我們想要在熱修復中合併?

+0

在您的例子iss53不與主 –

+0

合併我覺得OP都在談論情景在這裏:http://git-scm.com/book/en/Git-Branching-Basic-Branching-and-Merging – ellotheth

回答

0

@動靜能量,

在這種情況下,你有三個選擇:

  1. cherry-pickhotfix提交到iss53
  2. 合併masteriss53
  3. 再次基於iss53master

個人而言,我更喜歡#3。因爲它給了更清潔的歷史。然而,如果你有太多開發者(比如linux),#2可能會更容易。這應該是罕見的。在這種情況下,請確保在穩定的點上合併master(例如穩定的點釋放,而不是某種隨機測試狀態),因此歷史記錄不會太複雜。

LWN有an article詳細討論這一點。

+0

對於(2),這是否意味着切換到'iss53'並與'master'合併,或者切換到'master'並與'iss53'合併? (2)的 –

+0

,切換到'iss53'並鍵入'git merge master'。 –

0

如果iss53工作尚未完成,但你想要的修補程序,可以合併成masteriss53,或(更好)上的master頂底墊iss53

合併:

git checkout iss53 
git merge --no-ff master # --no-ff keeps the master tip where it is 

再次基於(你會得到這個本章稍後):

git checkout iss53 
git rebase master