1

特にour変更が保持されるマージに関して、より詳細なファイル履歴を提供するためのツールがあるかどうか疑問に思っています。この問題は、例を使用して最もよく説明されます。

masterfeatureブランチで競合する変更を加えたとしましょう。

git checkout master
<made some change to file.txt>
git commit -a -m "Change on master"
git checkout -b feature
<made conflicting change to file.txt>
git commit -a -m "Change on feature"

にマージfeaturemasterて変更を保持すると、にマージする場合とgit checkout --ours file.txtは異なる結果が得られます(その後、にマージして早送りします)。(効果的にマージすることも、不注意で行われた可能性があることを理解しています。)file.txtmasterfeaturefeaturemastermaster--oursmergetool

これらの両方のシナリオで使用git log -pすると、マージコミットはの変更を報告しませんfile.txtが、その内容はシナリオ間で異なります。現在file.txt、の変更履歴はあいまいになっており、どのバージョンが含まれているかを知ることが困難になっていmasterます。実行することはできますgit log -- file.txtが、このソリューションは拡張性がなく、どのファイルが不正なマージの一部であったかをすでに知っている必要があります。

誰かが間違ったマージ決定をした場合、どのファイルが同じに保たれたかを追跡することが困難になった場合。それ以外の場合、マージによってファイルに変更が加えられた場合、これを簡単に確認できます。

4

1 に答える 1

1

競合が解決されている場合は、(この回答に対するコメントに従って)正しく解決されていないだけですfile.txt。2つのブランチの違いを確認する1つの方法は、次のgit diffとおりです。

git diff master feature -- file.txt

ファイルを指定せずに発行git diff master featureすると、すべてのリポジトリのファイルにすべての違いが表示されます。のクリエイティブなアプリケーションをgit diff使用すると、必要なほぼすべての変更を分離できます。

それ以外の場合、最善の策はマージコミット自体である可能性があります。デフォルトでは、コミットメッセージは競合セクションを出力しますが、削除しないことをお勧めします。

于 2012-09-05T20:47:39.243 に答える