git rerereを有効にすることの欠点はありますか?


107

gitのrerere機能についてさまざまなことを読んだので、有効にすることを検討しています。しかし、使用中に発生する可能性のある問題について誰も言及していません。私は欠点があると仮定する必要があります。そうしないと、おそらくデフォルトで有効になります。それで、rerereを有効にすることの欠点はありますか?それ以外の場合に発生しないと思われる潜在的な問題は何ですか?


ときに自動rerereが有効になっていると、それは前の解像度を適用し、それはメッセージを表示していますか?もしそうなら、それはどのように見えますか?TIA!
joeytwiddle 14年

1
@joeytwiddle、この記事によると、それは次のような形式になりますResolved 'index.html' using previous resolution.
sampablokuper

回答:


69

マージを誤って行い、それを破棄して、「同じ」マージを再度行うと、再び正しくなくなります。ただし、記録された解像度は忘れることができます。ドキュメントから:

git rerere forget <pathspec>

これにより、rerereがで現在の競合について記録した競合解決がリセットされ<pathspec>ます。

特定のパスで使用するように注意してください。記録されたすべての解像度をどこにでも吹き飛ばしたくありません。(明示的に要求するために入力しない限り、forget引数を指定しないことは、これを回避するために推奨されていませんgit rerere forget .。)

しかし、そのようにしないと、誤ったマージを履歴に簡単に入れてしまう可能性があります。


13
これが、rerereまだマージされていないとしてマークされた競合のあるファイルを残しているので、コミットする前に手動で追加する必要があります(できれば検査/テストした後)。を使用git checkout -m <path>して、元の競合バージョンをチェックアウトし、必要に応じて解決をやり直すことができます。
Cascabel

1
それは理にかなっています!新しいエイリアスが必要なようです。
Cascabel

5
これがおそらく主な問題だと思います。rerereを有効にすると、エラーが予期せず侵入するもう1つの方法が追加されます。中止したマージ(または履歴から削除することで元に戻す)を行っても、後で戻ってきます。基本的には、実際の履歴グラフに直交する2番目の履歴メカニズムを導入します。
ライアンC.トンプソン

3
@RyanThompson中止されたマージはrerereに影響しません。(私はしばしば彼らがそうしたいと思います—私はそれを間違って設定したためにマージを中止したことがあり、それを正しく設定したときにまったく同じ解決策を実行する必要がありました。)履歴からマージを削除することに関して、なぜあなたはそれを行う?
Marnen Laibow-Koser 14

40

JC浜野が彼の記事で言及しているように「Rerereの楽しみ

  • Rerereは、競合した領域を解決するために選択した方法を記憶しています。
  • Rerereはまた、セマンティックの変更に適応するために、競合する領域の外側をどのように修正したかを記憶しています。
  • Rerereは、以前に解決したブランチとは異なる内容の2つのブランチをマージしていたとしても、以前の解決を再利用できます

長い間rerereを使ってきた人でも最後のポイントに気付かないことがよくあります。

したがってrerere、コンテンツが広すぎる場合にアクティブ化すると、最後のポイントのために、マージ解決が驚くべきまたは混乱する可能性があります。


15
競合するハンクはまだ一致する必要があります。誤検知を与えることはかなり困難です。
Cascabel 2011


3

バイナリファイルのみを含むコミット(gitk)を選択しました。競合のためにチェリーピックは失敗しました(これは当然のことです)、私はチェリーピックを維持しながら競合を解決しました。後で別のリベースされたブランチでdllが動作しないことに気付いて驚いた-(私は推測する)自動競合解決としてそれらがリベースに持ち込まれていないことを発見しただけだ。したがって、これは、直感に反する(完全に一貫していることは確かですが)動作に遭遇した(rerereが有効になっている)唯一のケースです。


1
治癒:git rerere forget path/to/compiled/bin.dll
Mr_and_Mrs_D 2015年

元のケースでは、チェリーピッキングではなく
リベースで競合が発生しました
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.