【问题标题】:Git and DiffTool problems : What do LOCAL and REMOTE point to?Git 和 DiffTool 问题:LOCAL 和 REMOTE 指向什么?
【发布时间】:2011-03-26 05:55:03
【问题描述】:

我一直在努力让 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 是从左侧的工作目录文件开始的,而不是我假设的右侧。 我知道我只能切换“我的”和“本地”命令,但我试图找出本地/远程指向的内容以及解决此问题的最佳方法

【问题讨论】:

    标签: git difftool


    【解决方案1】:

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

    • 你的 git 树的本地签入:LOCAL
    • 远程仓库的头(即将被合并):REMOTE
    • LOCAL 和 REMOTE 的共同祖先:BASE
    • 结果将写入的文件:MERGED

    【讨论】:

    • 所以如果你在 master 上,并且做git merge branch,LOCAL 是 master 副本,REMOTE 是分支副本(不管存储库),对吧?
    【解决方案2】:

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

     git difftool master experiment -- Makefile
    

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

    如果你只是运行:

    git difftool
    

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

    【讨论】:

      【解决方案3】:

      我正在使用 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\"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-12-12
        • 2011-02-10
        • 2017-04-08
        • 1970-01-01
        • 1970-01-01
        • 2015-06-02
        • 1970-01-01
        相关资源
        最近更新 更多