46

私は、現在表示されている .gitconfig ファイルを使用して、Git の difftool オプションとして tortoisemerge を機能させることに取り組んでいます。

   [diff]
        tool = tortoise

    [difftool "tortoise"]
        cmd = tortoisemerge.exe -mine:$LOCAL -base:$REMOTE

    [difftool]
        prompt = false

tortoise merge docsによると、「mine」コマンドは、どのファイルが右側に表示されるかを双方向の差分で示しています。

私の質問は、GIT によって提供される LOCAL 変数と REMOTE 変数が実際に何を指しているのかということです。ドキュメンテーションは、それを述べている少しあいまいです

LOCAL は差分前イメージの内容を含む一時ファイルの名前に設定され、REMOTE は差分後イメージの内容を含む一時ファイルの名前に設定されます。

ファイルを変更してから 'git difftool' と入力すると問題が発生します。「鉱山」コマンドと「ローカル」コマンドを切り替えるだけでよいことはわかっていますが、ローカル/リモートが何を指しているのか、この問題を解決する最善の方法を見つけようとしていました

4

3 に答える 3

182

これには4 つのコンポーネントがあります (この手順の前に、既にローカル チェックインを行っていることに注意してください)。

  • git ツリーにあるローカル チェックイン: LOCAL
  • リモートリポジトリのヘッド (マージされる): REMOTE
  • LOCAL と REMOTE の共通の祖先: BASE
  • 結果として書き込まれるファイル: MERGED .
于 2011-03-26T06:38:55.733 に答える
10

$LOCALこれは、は常にa/whateverdiff 出力にあり、$REMOTEはであることを意味すると思いますb/whatever。つまり、次の場合:

 git difftool master experiment -- Makefile

$LOCALブランチ内の状態を示す一時ファイルになりMakefile、ブランチ内の状態を示す一時ファイルになります。master$REMOTEexperiment

実行するだけの場合:

git difftool

...これは、インデックスと作業ツリーの違いを示しているため、違いのあるファイルごと$LOCALに、インデックス内のファイルのバージョンと同じ一時ファイルになりますが、$REMOTEはファイルのバージョンになりますあなたの作業ツリーで。

于 2011-03-26T06:17:39.407 に答える
1

マージと差分に TortoiseSvn を使用していますが、期待どおりに動作しています。差分では、右側に私の作業コピーが表示されます。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\"
于 2013-02-21T06:10:38.117 に答える