当我进行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的分步指南:
- 让git创建一个配置文件
-
可以被跳过,如果您的userdir中已经存在.gitconfig文件。
Windows用户:
%userprofile%(复制粘贴在Explorer地址栏中)
-
一个名为"的文件;。gitconfig";需要存在于
1.1打开cmd窗口,执行:
git config --global --edit
- 配置文件已创建
打开配置文件"。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的位置。
- 创建一个新的"程序""外部工具配置";命名为";git合并"从eclipse中执行合并!3.1选择以下参数:
位置:
C: \Program Files\Git\bin\Git.exe
工作目录:
${git_work_tree}
自变量:
mergetool--tool=kdiff3
要执行合并,请使用标准eclipse合并,一旦工作区显示冲突状态(项目上的红色标记可见),就标记要合并的项目,并启动";外部工具配置">我们在上面列出的步骤中创建。
合并将启动,kdiff3窗口将弹出从现在开始,只在您对合并结果满意时保存文件,因为如果您保存了文件,kdiff将提供积极的合并反馈。