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

我一直在使用我的.gitconfig文件当前显示在Git中作为difftool选项使用tortoisemerge工作:

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

根据龟合并文档 ,“我的”命令指出哪个文件将显示在右侧,在双向比较。

我的问题是,GIT提供的LOCAL和REMOTEvariables实际上指向了什么? 这个文档有点含糊地表明这一点

LOCAL被设置为包含diff预映像的内容的临时文件的名称,并且REMOTE被设置为包含diff映像的内容的临时文件的名称。

当我修改一个文件,然后input'git difftool'tortoisemerge时,问题就出现在左边的工作目录文件中,而不是我所假设的。 我知道我只能切换“我的”和“本地”的命令,但我试图弄清楚本地/远程指向以及解决此问题的最佳方法

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

  git difftool master experiment -- Makefile 

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

如果你只是运行:

 git difftool 

…显示索引和工作树之间的区别,所以对于每个有区别的文件, $LOCAL将是一个临时文件,与索引文件的版本相同,而$REMOTE将是工作树中的文件版本。

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

  • local-checkin你的git树有: LOCAL
  • 远程仓库(即将被合并)的头部: REMOTE
  • 共同的祖先既LOCAL和REMOTE: BASE
  • 将作为结果写入的文件: 已合并

我正在使用TortoiseSvn合并和差异,并按预期工作。 而在差异,它显示了我的工作副本的权利。 我的.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\"