我在this post跟踪了JörgWMittag的回答,并将meld配置为我的git中的difftool。现在,我可以使用此命令完美地查看和比较不同分支中文件的差异:
git checkout branch1
git difftool branch1:file.f90 branch2:file.f90
我执行了上面的命令,制作并保存了变化。但是,当我使用:
检查文件时emacs file.f90
我之前在meld中所做的更改根本没有保存。我不明白为什么会这样;我必须没有完全正确配置融合作为差异工具。任何人都可以帮我解决这个问题吗?谢谢!
答案 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:file
与file
进行比较。
此外,要使用branch
来区分整个工作树,请使用:
git difftool --dir-diff branch
如其他答案中所述,如果您需要将branch
与other_branch
区分开(某些分支与当前已检出的分支不同),则必须先使用other_branch
查看{{1}}以上命令。