Git和DiffTool问题:LOCAL和REMOTE指向什么?

时间:2011-03-26 05:55:04

标签: git difftool

我一直在努力让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设置为包含diff前映像内容的临时文件的名称,REMOTE设置为包含diff后映像内容的临时文件的名称。

当我修改文件,然后输入'git difftool'tortoisemerge时,问题出现在LEFT上的工作目录文件中,而不是正确的。 我知道我只能切换“我的”和“本地”命令,但我试图找出本地/远程指向的内容以及解决此问题的最佳方法

3 个答案:

答案 0 :(得分:181)

此处有 4个组件(请注意,在此步骤之前,您已经完成了本地签入。)

  • 您的git树所具有的本地签到: LOCAL
  • 远程存储库的头部(将要合并): REMOTE
  • LOCAL和REMOTE的共同祖先: BASE
  • 将作为结果写入的文件:已合并

答案 1 :(得分:10)

我认为这意味着$LOCAL始终是差异输出中的a/whatever,而$REMOTEb/whatever。换句话说,如果你这样做:

 git difftool master experiment -- Makefile

$LOCAL将是一个临时文件,显示Makefile分支中master的状态,而$REMOTE将是一个临时文件,在{{{}}中显示其状态1}}分支。

如果您刚刚运行:

experiment

...显示索引和工作树之间的区别,因此对于每个有差异的文件,git difftool 将是一个临时文件,与索引中文件的版本相同,而$LOCAL将是工作树中文件的版本。

答案 2 :(得分:1)

我正在使用TortoiseSvn进行合并和差异,并且按预期工作。在diff中,它在右侧显示我的工作副本。 我的.gitconfig与TortoiseSvn如下

[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\"