2012-04-02 11 views
16

私は、不要なマージコミットを作成せずに、ブランチが発展するにつれて2つのブランチ(マスターとトピックブランチ)の間で漸進的に競合解決を記録する目的で、git-rerereを使用しています。しかし、git-rerereのマンページを読んだ後でも、私は実際に私の紛争解決を記録しているときは少し不明です。新しいマージ競合を検出して解決する私の標準的なワークフローは、トピックブランチからgit merge masterを実行し、競合を解決してからすべてのファイルをステージングし、git commit -m "Finished test merge"でマージをコミットし、git reset --hard HEAD^を使用してマージを元に戻します。 〜によってgit-rereregit-rerereが競合解決を記録するために、マージをコミットする必要がありますか?

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

答えて

12

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を実行するだけです。

関連する問題