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

use*_*512 11 git git-diff meld

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

git checkout branch1
git difftool branch1:file.f90 branch2:file.f90
Run Code Online (Sandbox Code Playgroud)

我执行了上面的命令,制作并保存了变化.但是,当我使用以下方法检查文件时:

emacs file.f90
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*ark 8

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

git difftool branch -- file
Run Code Online (Sandbox Code Playgroud)

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

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

git difftool --dir-diff branch
Run Code Online (Sandbox Code Playgroud)

如其他答案中所述,如果您需要branchother_branch(某些分支与当前检出的分支不同)进行比较,则必须other_branch在使用上述命令之前先检出。


Dip*_*ick 6

因为您已明确指定要差异化的两个文件的分支,所以meld正在处理这两个文件的临时副本。尝试仅给出未检出的branch:file;的名称。这将使Meld将给定的branch:file的临时副本与已检出的同名文件进行比较。


Pio*_*icz 5

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

在您的情况下:

git checkout branch1
git difftool branch2:file.f90 file.f90
Run Code Online (Sandbox Code Playgroud)

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