2012-02-12 139 views

回答

9

git有一個鮮爲人知的功能叫做「Reuse Recorded Resolutions」,或者是rerere。

您可以通過運行git config --global rerere.enabled 1來全局啓用它。

如果rerere啓用,git會自動保存衝突的決議,後來會重用這些決議如果遇到同樣的衝突。這最終導致不需要用戶重新解決先前看到的衝突。

該功能在a post on git-scm.com中進一步解釋。有關更多詳細信息,請參閱help document for git rerere

+5

不幸的是,這隻會幫助你,如果你有它啓用當你第一次做了合併 - 現在爲時已晚。在Git源代碼的貢獻部分有一個[腳本叫做rerere-train](https://github.com/gitster/git/blob/master/contrib/rerere-train.sh),它貫穿了現有的歷史並且使得rerere從現有的合併中學習衝突解決方案 - 假設它可行,在這種情況下可以幫助您。 – Cascabel 2012-02-13 04:33:22

1

注意:由於contrib/rerere-train.sh腳本應該重新培訓rerere(你可以看到一個manual retraining here

爲了確保rerere忘記其目前所有的底墊中的分辨率,你現在使用Git 2.14.x官方選項/2.15(2017年第3季度)爲contrib/rerere-train--overwrite標誌。

Raman Gupta (rocketraman)通過查看commit ad53bf7(2017年7月26日)。
(由Junio C Hamano -- gitster --在​​合併,2017年8月11日)

contrib/rerere-train:任選覆蓋現有的分辨率

提供用戶選項來改寫使用 --overwrite標誌現有決議。

例如,如果用戶知道他們已經在其rerere緩存中存在衝突條目,但希望根據傳遞給rerere-訓練腳本。