我剛剛讀了http://www.draconianoverlord.com/2013/09/07/no-cherry-picking.html,似乎svn:mergeinfo
可以跟蹤櫻桃採摘時發生的單個提交合並信息。Subversion更擅長櫻桃採摘然後git(或任何DAG VCS)?
當您將您的功能分支與櫻桃選中的錯誤修復程序合併到原始分支(您之前進行錯誤修復的位置)時,可避免合併衝突。
這裏有趣的ASCII藝術(這人喜歡在SO):
o--o--o--o--o feature
^ ^ \
/ / v
-o--o--o--X--o---o---Y--o--> dev
這裏X
- 只有單一變更(必備/攔截修復,我們從移動到dev
分支feature
)。
我試着發現Git
在Y
合併中有衝突,如果你在修改X
已經影響到的行進行了修改。而SVN
只是從合併中跳過該變更集。
UPDATE這導致DAG VCS用戶使用bisect
和對等和分支的共同祖先進行修復傳播。所以你可以創造清潔的歷史。
我不喜歡'rerere'就好像我在合併解決方案中犯了一個錯誤,很難把它弄清楚,因爲它認爲它知道我想要它做什麼。 – cforbish
必要時,您可以使用'rerere forget [path]'和'rerere clear'來解決高速緩存的分辨率問題。 – Chris
@Chris哇!一些新的知道。 +1 – gavenkoa