我在branchA中有FileA,在branchB中有FileB。
问题是我一次只能访问一个文件。 我希望能够通过FileMerge或meld来比较这些文件,因为它们是我为Mac找到的唯一的diffTools。
如何通过meld / FileMerge区分两个文件?
[已解决]:第一个问题: FileMerge不允许标准输入
Masi:您可以使用opendiff to allow FileMerge来获取标准输入的文件。所以接下来的问题是找到如何使用git的diff工具来使用opendiff。
第二个开发问题:使Git的diff工具在Mac中使用opendiff
答案 0 :(得分:66)
您可以使用“git mergetool”进行合并,并使用现代git(意味着版本1.6.3及更高版本)“git difftool”进行比较,使用图形工具。当然你必须首先配置它们,但它们会做一些自动检测(当然还有一些硬编码的首选项),如果我没记错的话,内置了opendiff支持。
然后当然你可以像使用普通的“git diff”一样使用你的图形工具(opendiff / FileMerge),例如
prompt> git difftool somebranch:UNREADME otherbranch:README
答案 1 :(得分:61)
git支持分支名称作为存储库路径的一部分。例如,如果您的存储库中包含以下文件,README
仅在master
上,而UNREADME
仅在branch
上:
master:README
branch:UNREADME
您可以通过git与它们区分:
git diff branch:UNREADME master:README
您可以使用git show
git show branch1:UNREADME
因此,如果外部差异实用程序可以在bash提示符下获取2个文件,则可以使用以下内容对它们进行区分:
diff-command <(git show branch1:UNREADME) <(git show master:README)
<(...)
bash语法获取所附命令的输出,在管道中运行它并将管道的文件路径放在命令行上。
答案 2 :(得分:37)
例如,如果您当前结帐到branchA,则可以使用以下命令:
git diff branchB path/to/common/file/between/branches.txt
如果您想要更改的子集,则可以编辑差异,或保留原样,并将差异git apply
作为补丁。对于这样做的GUI工具,希望其他人会在那里有建议。
答案 3 :(得分:1)
从the docs开始,您需要在.git / config文件中使用类似于以下内容的内容:
# Our diff algorithm
[diff]
external = opendiff