2010-11-01 104 views
3

我無法在git中進行正確的分支合併。例如,我有兩個分支:git合併命令使用

  C - D - E my_branch 
    / 
A - B - F - G - K *master 

現在我在掌握了。後「混帳合併my_branch」我的主人得到了一些這樣的:

A - B - C - D - F - G - K - E - M *master 

(M - 合併提交) 但我除了這一點:

A - B - F - G - K - M 

這很重要,因爲在my_branch我經常做不只爲我自己編譯提交;我不想把他們推到主人手中。如何讓我想要的合併?

回答

3

我認爲你所要求的是一種單一的提交出現的方式就好像你一次性完成了你個人分支的所有工作。請注意,這不是git術語中的「合併提交」;這只是一個正常的提交。

編輯:這裏要注意的一點是,這樣做意味着git不會保留任何合併知識,因此如果您想繼續使用合併後的個人分支,它開始變得尷尬。對於那些在壓縮「合併」之後不再使用的實驗性分支,這是完美的。

通過使用git merge --squash(然後使用git commit提交結果),您可以完全做到這一點。這會給你你想要的結果:(使用git rebase -i master),使它們看起來正是我想調整的提交,然後用git merge給他們帶來

A - B - F - G - K - M 

我通常做的是什麼先做處理我的個人分支成爲主人。這樣我也可以這樣做:

A - B - F - G - K - M1 - M2 - M3 

其中M1M2M3是在個人分公司各項工作的返工,但在某種程度上說也有道理但從主分支點。這是非常有用的,因爲將來使用修訂歷史記錄時,保持單獨的提交較小且邏輯劃分很方便。

0

使用--squash選項git merge:它要你的分支,它壓扁成一個單一的提交,然後合併,在