View differences of branches with meld?
我知道我可以用
目前,我执行以下步骤:
例如
江户十一〔四〕号
埃多克斯1〔6〕
江户十一〔七〕号
有没有一种更简单的方法可以在meld中得到相同的结果?我只需要它来检查更改,而不是主要用于合并。
短&甜:
1 | git config --global diff.tool meld |
这将Git配置为使用
然后,如果您想要一个图形化的差异而不是文本化的差异,您只需调用
1 | git difftool master..devel |
号
更新:如果您不想一次一个文件的diff,而是想使用meld的"子目录"视图处理两个分支之间的所有更改,请注意
1 | git difftool -d ABC |
从Git v1.7.11开始,您可以使用
配置Git
1 | git config --global diff.tool meld |
用它
1 2 | git difftool -d topic // -d is --dir-diff git difftool -d master..topic |
。
对于MacOS
1 2 3 | brew cask install meld git config --global difftool.meld.cmd 'open -W -a Meld --args "$LOCAL" "$PWD/$REMOTE"' git config --global difftool.meld.trustExitCode true |
。
我还发现这个问题很烦人,所以我做了Gitmeld,它允许一种更舒适的方式来区分针对工作树或临时区域的任意提交。你可以在https://github.com/wmanley/git-meld上找到它。这有点像Mark的脚本,但可以将任意提交、临时区域或工作目录与其他任何提交、临时区域或工作目录进行比较。如果您比较的对象之一是工作树,那么它也是读写的,这样您就不会丢失所做的更改。
重要的是,使用
1 | git difftool -d branchname |
meld将显示左右目录都位于/tmp中。但是,右目录中的文件实际上是指向当前工作目录中文件的符号链接(不适用于Windows)。所以您可以在meld中对它们进行编辑,当您保存它们时,所做的更改将保存在您的工作目录中。
然而,更有趣的选择是将当前的工作目录与stash进行比较。您只需键入:
1 | git difftool -d stash |
。
然后,您可以将一些更改从stash(左窗口)转移到当前工作副本(右窗口),而无需使用
我认为它可以显著地提高隐藏工作流程。您可以逐步将更改从存储转移到工作副本,并逐个提交,如果需要,还可以引入其他更改。
虽然从其他答案来看,目前似乎没有直接在Git存储库中执行此操作的方法,但编写一个脚本很容易(由于另一个问题的答案:)将两个提交的树提取到临时目录并在其上运行meld,在meld退出时删除这两个目录:
网址:http://gist.github.com/498628
当然,您将丢失通过meld所做的任何更改,但我认为,对于快速概述这些差异是非常好的。
我认为这样做的一个简单方法是使用
目标:比较分支机构A和分支机构B与MELD之间的差异
1 2 3 4 | git checkout branch_a git checkout -b do_diff git reset --soft branch_b meld . |
。
在Git v1.7.9中,您可以比较两次提交而不使用命令行:
您必须在"git-gui"编辑选项中配置全局:"使用合并工具:meld"。
启动gitk,选择一个提交,右键单击另一个提交>"diff this-->selected"。在"patch"下,右键单击一个文件>"external diff"。
meld将启动并显示仍然选定的,首先在右侧提交。