14

2 つのブランチをマージしました。多くの競合を手に入れました。それらをすべて解決しました。よくわかりませんが、競合の解決中にエラーが発生した可能性があります。そして、それが正しいかどうかを確認する別の方法はありません。もう一度マージを実行して、競合を 1 つずつ確認するだけです。

これは、マージの結果を保存するためにもう 1 つブランチを作成する必要があることを意味しますよね?

避けることはできますか?もう一度マージを実行せずに、git のどこかから<<<<<<これら======すべての競合するファイルをすべて取得することは可能でしょうか?>>>>>>

4

2 に答える 2

4

マージが何をしたかを見たい場合は、あなたができる

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>
于 2013-03-15T22:36:04.783 に答える
2

はい、それは些細なことです。まず、を使用してマージコミットのsha1idを見つける必要がありますgit log。あなたが次にするとき:

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

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

git diff HEAD..<sha1>

競合の解決に違いがあるかどうかを確認します。

ところで、コミットのsha1の人間にわかりやすい名前をgitで分岐するので、好きなだけ作成することを恐れないでください。

PS:Windowsで作業している場合^、コマンドラインのシンボルは特別です。それを2倍にするか、コマンドライン引数を引用符で囲む必要があります。

于 2013-03-15T23:53:40.767 に答える