簡體   English   中英

啟用 git rerere 有什么缺點嗎?

[英]Are there any downsides to enabling git rerere?

我已經閱讀了有關 git 的rerere功能的各種內容,我正在考慮啟用它。

git rerere功能有點隱藏功能。 這個名字代表“重用記錄的解決方案” ,顧名思義,它允許你讓 Git 記住你是如何解決一個大塊沖突的,以便下次它看到相同的沖突時,Git 可以自動為你解決它.

https://git-scm.com/book/en/v2/Git-Tools-Rerere

但是我沒有看到任何人提到使用rerere可能出現的任何問題。

我必須假設有一個缺點,否則它可能會默認啟用。 那么啟用 rerere 有什么缺點嗎? 它會導致哪些不會發生的潛在問題?

如果您錯誤地進行合並,則將其丟棄,然后再次進行“相同”合並,它將再次不正確。 不過,您可以忘記記錄的分辨率。 文檔

git rerere forget <pathspec>

這將重置 rerere 為<pathspec>的當前沖突記錄的沖突解決方案。

小心在特定路徑上使用它; 您不想到處吹走您錄制的所有分辨率。 (不推薦使用沒有參數的forget ,以防止您這樣做,除非您鍵入git rerere forget .來明確請求它。)

但是,如果您不認為這樣做,則很容易最終將錯誤的合並放入您的歷史記錄中。

正如 JC Hamano 在他的文章“ Fun with rerere ”中提到的

  • Rerere 記得您是如何選擇解決沖突區域的;
  • Rerere 還記得您如何在沖突區域之外進行調整以適應語義變化;
  • Rerere 可以重用以前的解決方案,即使您合並的兩個分支的內容與之前解決的分支的內容不同

即使是長期使用 rerere 的人,也常常沒有注意到最后一點。

因此,如果您在太廣泛的內容上激活rerere ,由於最后一點,您可能最終會得到令人驚訝或令人困惑的合並解決方案。

我已經在全球啟用了 rerere。 我真的沒有注意到任何問題,它通常似乎讓我的生活更輕松。

我選擇了一個僅包含二進制文件的提交(在 gitk 中)。 Cherrypick 由於沖突而失敗(想到這是很自然的),我解決了保留cherry pick 的沖突。 后來我驚訝地發現在另一個重新定位的分支中,我的 dll 沒有表現 - 只是發現它們沒有作為(我推測)自動沖突解決方案被帶入重新定位。 所以這是我遇到的唯一一個遇到違反直覺(盡管我確信完全一致)行為的情況(啟用了 rerere)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM