2012-08-23 229 views
0

我有一個主分支,由另一個dev分支,然後添加了一些功能。同時,我對一些相同的文件進行了修改。雖然在行上沒有直接的衝突,但我想知道使用不同的方法將其他分支合併回主,最小的衝突。合併分支與先前在主分支上提交的方法,然後稍後重新提交主提交

ASCII技術可視化:

A-B-C-D 
\ 
1-2-3 

我是最好關閉檢查出提交A,在3合併分支回,然後通過重新應用d B中的變化?或者我應該把3合併回D?或者我確信有一些更好的方法,我錯過了。

我對git相當陌生,我想我已經掌握了它,但我只是想確保我正確地使用它。

回答

1

你描述檢查出來A,合併在1什麼 - 3,然後應用B - D -is稱爲重訂一個標準的Git技術。假設不存在衝突,不能自動解決,你可以用一條命令做到這一點:

git rebase --onto {commit 3} {commit A} {commit D} 

如果存在衝突做底墊中時,Git會討論通過解決這些問題。

但是,正常的Git工作流只是將分支合併在一起。除非你有理由不這樣做,否則我會主張合併。

合併更準確地反映了開發過程;這意味着您可以查看您的歷史記錄,並確切瞭解如何開發功能,然後合併到主代碼中。重新激活使您的歷史看起來人爲乾淨;有時候這很有用,但它隱藏了事情的完成方式。

3

假定A-B-C-D的原始分支名稱是「orig」。你在「3」,分支名稱爲「主」。試試這個:

git rebase orig 
+1

+!重新設計是好的。最好的建議是在推動遠程和其他開發人員也在嘗試之前做到這一點。壓縮對於代碼審查也非常有用。 –

+0

我很猶豫是否要重組。亞歷山大失去了多少歷史?如果這已經在遠程回購,那麼它會對其他開發者產生多大影響? – mwotton