使用KDiff3在Git中编辑diff



当我进行diff时,我经常想在提交之前编辑我的本地文件。这在Eclipse的比较视图中运行得很好,因为它允许您轻松地编辑本地文件以及复制以前版本的更改。

我正在尝试设置Git和KDiff3以同样的方式工作。当我使用KDiff3作为我的mergetool时,它可以按预期工作。然而,当我将其设置为difftool时,它会给我一个只读视图,因此我无法进行任何编辑。根据文件(http://kdiff3.sourceforge.net/doc/documentation.html),我希望--output选项能为我提供我想要的两个文件合并,但它没有。我的.gitconfig:的相关部分

[diff]
tool = kdiff3
[difftool "kdiff3"]
cmd = /Applications/kdiff3.app/Contents/MacOS/kdiff3 $LOCAL $REMOTE --output $LOCAL
trustExitCode = false

如果我使用以下命令,我可以使用KDiff3编辑树内文件:

kdiff3 $LOCAL $REMOTE --output $MERGED

KDiff3在我的$PATH中,所以重要的一点是将$LOCAL的输出改为$MERGED

来自git-difftool手册页:

。。。配置的命令行将使用以下可用变量调用:$LOCAL设置为包含diff前映像内容的临时文件的名称,$REMOTE设置为包含diff后映像内容的暂时文件的名称$MERGED是正在进行比较的文件的名称。

由于将输出设置为$LOCAL将写入临时文件,因此您将希望写入$MERGED,因为这将是树文件中的实际"本地"。

这里有一个在Eclipse中为GIT配置kdiff3的分步指南:

  1. 让git创建一个配置文件
  • 可以被跳过,如果您的userdir中已经存在.gitconfig文件。

    Windows用户:

    %userprofile%(复制粘贴在Explorer地址栏中)

  • 一个名为"的文件;。gitconfig";需要存在于

1.1打开cmd窗口,执行:

git config --global --edit
  • 配置文件已创建
  1. 打开配置文件"。gitconfig">2.1添加以下行,将kdiff3注册为git的diff和合并工具(根据需要自定义路径):

    [difftool"kdiff3"]
    路径=";C: \Program Files\KDiff3/KDiff3.exe">
    #

    [mergetool"kdiff3"]
    路径=";C: \Program Files\KDiff3/KDiff3.exe">
    #trustExitCode=true
    #

注意:这将是注册您喜欢的任何其他支持的mergetool的位置。

  1. 创建一个新的"程序""外部工具配置";命名为";git合并"从eclipse中执行合并!3.1选择以下参数:
  • 位置:

    C: \Program Files\Git\bin\Git.exe

  • 工作目录:

    ${git_work_tree}

  • 自变量:

    mergetool--tool=kdiff3

要执行合并,请使用标准eclipse合并,一旦工作区显示冲突状态(项目上的红色标记可见),就标记要合并的项目,并启动";外部工具配置">我们在上面列出的步骤中创建。

合并将启动,kdiff3窗口将弹出从现在开始,只在您对合并结果满意时保存文件,因为如果您保存了文件,kdiff将提供积极的合并反馈。

相关内容

  • 没有找到相关文章

最新更新