Git - 在meld(作为difftool)中所做的更改未保存

时间:2014-01-26 21:38:33

标签: git git-diff meld

我在this post跟踪了JörgWMittag的回答,并将meld配置为我的git中的difftool。现在,我可以使用此命令完美地查看和比较不同分支中文件的差异:

git checkout branch1
git difftool branch1:file.f90 branch2:file.f90

我执行了上面的命令,制作并保存了变化。但是,当我使用:

检查文件时
emacs file.f90

我之前在meld中所做的更改根本没有保存。我不明白为什么会这样;我必须没有完全正确配置融合作为差异工具。任何人都可以帮我解决这个问题吗?谢谢!

3 个答案:

答案 0 :(得分:4)

因为你明确地给出了两个文件的分支,所以meld正在处理这两个文件的临时副本。尝试给出未签出分支的名称:file;这应该导致meld比较给定分支的临时副本:文件与签出的同名文件。

答案 1 :(得分:3)

为了保存您的更改,您需要将某个分支与当前工作文件进行比较。

在你的情况下:

git checkout branch1
git difftool branch2:file.f90 file.f90

或者,您可以将整个分支与工作目录进行比较并保存更改。我在此处提供了有关详细信息:https://stackoverflow.com/a/22535996/2178047

答案 2 :(得分:2)

为避免需要指定文件名两次,请使用以下命令:

git difftool branch -- file

这会在工作树中将branch:filefile进行比较。

此外,要使用branch来区分整个工作树,请使用:

git difftool --dir-diff branch

如其他答案中所述,如果您需要将branchother_branch区分开(某些分支与当前已检出的分支不同),则必须先使用other_branch查看{{1}}以上命令。