2013-01-03 205 views
7

如果您有您分叉關老爺的再發展的功能在它...當它涉及到合併回主人,我聽到兩種不同的方法的一個分支:合併的Git分支到主

  1. 首先將主合併到特徵分支中,然後將分支合併回主。
  2. 將你的分支合併爲主。

任何人都可以告訴我哪種方法更好,如果對第一種方法有實際好處?

或者如果有更好的方法?

回答

2

比方說,您從主功能西弗,同時,我創建功能埃裏克。我的分支修改了與您的文件相同的文件;實際上,它恰好以我們的git客戶端不夠聰明的方式重疊。我首先完成開發併合並我的更改。

在這種情況下,您將不可避免地被提示解決衝突。

CONFLICT (content): Merge conflict in stackoverflow.html 
Automatic merge failed; fix conflicts and then commit the result. 

如果你有去(1),合併到主分支,並確保一切看起來不錯,你就會解決經由合併的衝突功能西弗提交。如果您在解決過程中犯了錯誤,您可以將它們回滾,而無需對主人進行任何直接修改。這很好。

如果與(2)一起使用,您將通過直接向主服務器進行的合併提交來解決衝突。如果你犯了什麼錯誤,你會打破主人。這不好。

1

我想這取決於;-)

有些事情要考慮:

  • 你需要的功能分支合併後不再?如果是這樣,將master合併到master可能會很有用。如果不是,如果您要刪除它,合併到功能分支沒有太大的意義。
  • 您可以打破master分支的本地工作副本嗎?如果不是,則應避免將代碼合併到master中,這可能會導致需要手動解決的大量衝突。如果沒關係,繼續。

一般來說,我認爲這取決於你如何使用git。

由於我通常只是暫時使用功能分支,並在成功完成功能並將它們合併到master後刪除它們,所以我通常會直接合併到master中,然後刪除其他分支。

另一方面,我可以想象有可能是可能有用的情況下做相反的事情。但只要沒有強烈的理由,我會盡量避免它。一個合併就足夠了;-)。

1

理論上,沒有區別。您在一個分支中有一組更改,您將與另一個分支中的一組更改相結合。這些變化最終在何處並不重要。

實際上,最好將更改合併到功能分支中,因爲它爲您提供瞭解決衝突的獨立位置。如果功能分支長時間處於開發階段,這一點尤其重要,因爲在第一次提交之後會經常發生微妙的衝突。

最好的方法是定期更新從主人到功能分支,減少在功能開發結束時發生衝突的可能性。