4 に答える
誤ってマージを行ってから破棄し、「同じ」マージを再度行うと、再び正しくなくなります。ただし、記録された解像度を忘れることがあります。ドキュメントから:
git rerere forget <pathspec>
これにより、rerere が の現在の競合について記録した競合解決がリセットされ
<pathspec>
ます。
特定のパスで使用する場合は注意してください。記録されたすべての解像度をどこでも吹き飛ばしたくありません。(明示的に要求するように入力しない限り、これを行うのを避けるためforget
に、引数なしは推奨されていません。)git rerere forget .
しかし、そうしないと、間違ったマージを簡単に履歴に追加してしまう可能性があります..
JC浜野が記事「レレレで楽しむ」で言及しているように
- Rerere は、競合する領域を解決するためにどのように選択したかを覚えています。
- Rerere はまた、セマンティックの変化に適応するために、競合する領域の外側をどのように修正したかを覚えています。
- Rerere は、以前に解決したブランチとは内容が異なる 2 つのブランチをマージしていたとしても、以前の解決を再利用できます。
リレレを長く使っている人でも、最後のポイントに気が付かないことが多いです。
したがって、rerere
広すぎるコンテンツでアクティブ化すると、最後のポイントのために、驚くべきまたは混乱するマージ解決になる可能性があります.
私はrerereをグローバルに有効にしました。私は実際に何の問題にも気づいていませんし、通常は私の生活が楽になっているようです.
バイナリ ファイルのみを含むコミット (gitk 内) を選びました。チェリーピックは競合のために失敗し(それについて考えるようになるのは当然です)、チェリーピックを保持して競合を解決しました。後で、リベースされた別のブランチで、自分の dll が動作しないことを発見して驚きました。(私が推測するに) 自動競合解決として、それらがリベースに持ち込まれていないことを発見しただけです。したがって、これは、直感に反する(完全に一貫していると確信していますが)動作に遭遇した(rerereを有効にした)唯一のケースです。