2012-06-15 12 views
8

私は2つのブランチをマージしました。紛争がたくさんあります。それらをすべて解決しました。今私は確信していません、多分私は紛争解決の間にエラーを出しました。そして、もう一度マージを実行し、競合を1つずつチェックすることは、それが真実かどうかを確認する別の方法は見当たりません。gitはマージをもう一度実行せずに過去のマージからコンフリクトを取得します

これは、マージ結果を格納するブランチをもう1つ作成する必要があることを意味します。

避けることはできますか?多分、マージをもう一度実行することなく、これらすべてのファイルと競合するすべてのファイルを得ることは可能でしょうか?<<<<<<======>>>>>>その後、

+0

答えの1つを受け入れるべきでしょうか。 – dotancohen

+0

私は答えが実際に質問に答えるとは思わない。後続のマージは、前のマージと同じ競合を示すべきではありません。 – e40

答えて

3

マージがやったあなたが

git show <hash-of-merge-commit> 

を何ができるかを見たい場合は、全体のマージをやり直したい場合は、

git checkout <branch-that-you-merged-to> 
git reset --hard <hash-of-the-commit-just-before-the-merge> 
git merge <branch-that-you-merged-in> 

を行うマージをやり直したい場合や最初のマージの2番目のマージを比較し、あなたが行うことができます(それが優れていた場合に考慮すべき):

git checkout <branch-that-you-merged-to> 
git rev-parse HEAD 

このギブあなたは現在のコミットのハッシュです。それに注意してください。それは、はい次に、完了マージ

git reset --hard <hash-of-the-commit-just-before-the-merge> 
git merge <branch-that-you-merged-in> 

を行うあなたは、元のマージが良くなったと感じた場合は、

git difftool <hash-of-commit-noted-above> 

マージを比較するために、これを行うことは、あなたは

git reset --hard <hash-of-commit-noted-above> 
+0

マージ中に、 "git show:1:file.txt"でマージベース、 ":2:file.txt"をマージ対象ファイル ":3:file.txt"に表示することができますマージインファイルを表示する –

2

を行うことができます簡単です。まず、git logを使ってマージコミットのsha1 idを見つける必要があります。次の作業を行うとき:

git checkout <sha1>^1 
git merge <sha1>^2 

あなたはヘッドレス状態になります。 ^nは、コミットのn番目の親を意味します。したがって、ブランチは作成されません。競合の解決に相違がないかどうかを確認するには、再度慎重に競合を解決してから

git diff HEAD..<sha1> 

を確認してください。

ところで、gitで分岐するのはコミットのsha1の人にやさしい名前なので、望みどおりに作成することを恐れないでください。

PS:Windowsで作業している場合は、コマンドラインの^シンボルは特殊です。コマンドライン引数を二重にするか、コマンドライン引数を引用する必要があります。

関連する問題