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