私は現在TortoisemergeがGitのdifftoolオプションとして機能するように取り組んでおり、現在.gitconfigファイルが表示されています:
[diff]
tool = tortoise
[difftool "tortoise"]
cmd = tortoisemerge.exe -mine:$LOCAL -base:$REMOTE
[difftool]
Prompt = false
tortoise merge docs によると、「mine」コマンドは、どのファイルが右側に表示されるかを双方向の差分で示します。
私の質問は、GITが提供するLOCALおよびREMOTE変数は実際に何を指しているのですか? documentation は少し曖昧で、
LOCALは、差分プレイメージの内容を含む一時ファイルの名前に設定され、REMOTEは、差分ポストイメージの内容を含む一時ファイルの名前に設定されます。
ファイルを変更し、「git difftool」と入力すると問題が発生します。tortoisemergeは、想定どおりの右側ではなく、左側の作業ディレクトリファイルで開始されます。私は単に「私の」コマンドと「ローカル」コマンドを切り替えることができることを知っていますが、ローカル/リモートが指すものとこの問題を解決する最良の方法を見つけようとしていました
$LOCAL
は常にa/whatever
はdiff出力で、$REMOTE
それは b/whatever
。つまり、次の場合:
git difftool master experiment -- Makefile
$LOCAL
は、Makefile
ブランチのmaster
の状態を示す一時ファイルになり、$REMOTE
は、experiment
ブランチの状態を示す一時ファイルになります。
単に実行する場合:
git difftool
...これは、インデックスと作業ツリーの違いを示しているので、違いのあるファイルごとに、$LOCAL
は、インデックス内のファイルのバージョンと同じ一時ファイルになりますが、$REMOTE
は、作業ツリー内のファイルのバージョンになります。
これには4コンポーネントがあります(このステップの前に、既にローカルチェックインを行っていることに注意してください)。
私はTortoiseSvnをmergeとdiffに使用しており、期待どおりに動作しています。差分表示中、右側に作業コピーが表示されます。 TortoiseSvnでの.gitconfigは次のとおりです
[diff]
tool = tortoise
[merge]
tool = tortoise
[mergetool "tortoise"]
cmd = TortoiseMerge.exe -base:\"$BASE\" -mine:\"$LOCAL\" -theirs:\"$REMOTE\" -merged:\"$MERGED\"
[difftool "tortoise"]
cmd = tortoisemerge.exe -mine:\"$REMOTE\" -base:\"$LOCAL\"