18

git-rerere不必要なマージ コミットを作成することなく、2 つのブランチ (マスター ブランチとトピック ブランチ) の間の競合の解決を、それらのブランチが発展するにつれて段階的に記録するという意図された目的で使用しています。ただし、git-rerere マンページを読んだ後でも、rerere が実際に競合解決をいつ記録するかについては少しわかりません。新しいマージの競合を検出して解決するための私の標準的なワークフローはgit merge master、トピック ブランチから実行し、競合を解決してから、すべてのファイルをステージングして でマージをコミットし、で保存された記録された解決のみを残してgit commit -m "Finished test merge"を使用してマージを元に戻すことです。git reset --hard HEAD^git-rerere

ただし、これは少しばかげているようです。コミットを作成してから、解決を記録するためだけにそれを元に戻しますか? のマンページを読んだ後でgit-rerereも、いつ私の解決策が記録されるかはよくわかりません。競合するファイルをステージングするだけで十分ですか、それとも、私が行ってきたように、競合を解決した後に実際にマージ コミットを作成する必要がありますか?

4

2 に答える 2

15

マンページから:

Running the git rerere command immediately after a conflicted automerge
records the conflicted working tree files, with the usual conflict
markers <<<<<<<, =======, and >>>>>>> in them. Later, after you are
done resolving the conflicts, running git rerere again will record the
resolved state of these files.

と:

As a convenience measure, git merge automatically invokes git rerere
upon exiting with a failed automerge and git rerere records the hand
resolve when it is a new conflict, or reuses the earlier hand resolve
when it is not. git commit also invokes git rerere when committing a
merge result. What this means is that you do not have to do anything
special yourself (besides enabling the rerere.enabled config variable).

したがって、コミットしてコミットを元に戻す必要はありません。パラメータなしで実行git rerereして、コミットを記録できます。

于 2012-04-04T20:42:59.167 に答える