web-dev-qa-db-ja.com

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

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

102

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

git rerere forget <pathspec>

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

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

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

66
MatrixFrog

J. C.浜野が彼の記事で言及しているように、「 Fun with rerere

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

Rerereを長い間使用している人でさえ、最後の点に気付かないことがよくあります。

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

37
VonC

私は、バイナリファイルのみを含むコミットを(gitkで)選択しました。チェリーピックは競合のために失敗しました(これは当然のことですが)チェリーピックを保持したまま競合を解決しました。後で驚いたのは、another rebaseブランチで私のdllが動作しなかったことです-ただ、自動競合解決(推測)としてリベースに運ばれなかったことを発見しただけです。したがって、これは直観に反する(完全に一貫性があると確信していますが)動作に遭遇した(再有効化が有効になっている)唯一のケースです。

3
Mr_and_Mrs_D

私はグローバルに有効になっています。私は本当に問題に気づいていない、そしてそれは通常私の人生を楽にするようだ。

2