3

Bazaarでは、foo.htmlで競合がある場合、追加の3つのファイルが作成されます

foo.html.BASE
foo.html.OTHER
foo.html.THIS

その後、あなたはすることができます

diff -Naur foo.html.BASE foo.html.OTHER

共通の基礎を他の一連の変更と比較することは、それらが何を変更したかを正確に示し、なぜそれを行ったのかを答えるのに役立つため、非常に役立ちます。たとえば、変更されたのが空白だけの場合は、自信を持って自分の変更を使用できます。

gitでこれを達成するにはどうすればよいですか?

4

2 に答える 2

4

git3つのファイルの実際のフルコピーバージョンは作業ディレクトリに保存されません。代わりに、競合マーカーが配置された単一のファイルを保存します。ただし、:<stage>:<filename>構文を使用してこれらのバージョンを取得することはできます(gitツールの場合、ファイルは実際には存在しないため、通常diffは表示されません)。git diff :1:foo.html :2:foo.htmlしたがって、たとえば、との違いを確認するためにBASE実行できますTHIS。ステージ3があなたのOTHERバージョンになります。git mergetool foo.htmlまたはを使用することもできますgit difftool foo.html。本当にツール以外を使用する必要がある場合は、次のgitように実行できます。

git show :1:foo.html > foo.html.BASE
git show :2:foo.html > foo.html.THIS
git show :3:foo.html > foo.html.OTHER
diff ......
于 2013-02-04T22:11:05.373 に答える
2

外部ツールのファイル間の簡単な差分を取得するには、を使用できますgit difftool

競合解決の状況では、を使用することもできますgit mergetool

これらは特定の構成と使用オプションのセットを共有しますが、git mergetool実際にはBazaarで知っているものと同様のファイルを作成します。これに関する詳細は、上記のリンク先のマニュアルページに記載されています。

difftoolまた、一般的な差分ツールとマージツールのいくつかをmergetool知っており、追加の構成なしでそれらを使用できます(vimdiff、meld、k3diffなど)が、独自に構成するか、カスタムオプションを使用してこれらのツールの動作を変更できます。

やりたいことをやろうとする必要がありmergetoolます(たとえば、mergetoolマージツールの終了後にこれらのファイルを削除しないように構成できるため、さらに検査することができます)。出発点ができたので、特にマニュアルページが技術的すぎて好みに合わない場合は、Googleも役立ちます。

特定の問題が発生した場合は、新しい質問を開くことができます;)

于 2013-02-04T22:08:15.097 に答える