无法在Git的两个独立分支中区分文件

分支B中的分支A和分支B中有FileA。

问题是我只能在一次访问一个文件。 我希望能够通过FileMerge或meld比较文件,因为它们是我在Mac上find的唯一diffTools。

你怎么能通过融合/ FileMerge这两个文件


[解决]: 第一个开发的问题: FileMerge不允许标准input

Masi:您可以使用opendiff来允许FileMerge从标准input中获取文件。 所以接下来的问题是如何让git的diff工具使用opendiff。


第二个开发问题:使Git的diff工具在Mac中使用opendiff

你可以使用“ git mergetool ”进行合并,在现代的git(意思是版本1.6.3和更高版本)“ git difftool ”中使用graphics工具进行比较。 当然,你将不得不先configuration它们,但他们做一些自动检测(当然有一些硬编码的偏好),如果我没有记错opendiff支持内置。

然后当然你可以像使用普通的“git diff”一样使用你的graphics工具(opendiff / FileMerge),例如

prompt> git difftool somebranch:UNREADME otherbranch:README 

git支持分支名称作为存储库path的一部分。 例如,如果您的存储库中包含以下文件,则只能在master UNREADME上使用README ,而在branch只能使用UNREADME

 master:README branch:UNREADME 

你可以通过git来区别它们:

 git diff branch:UNREADME master:README 

使用git show你可以得到一个仓库工件到标准输出:

 git show branch1:UNREADME 

所以如果你的外部diff工具可以在bash提示符下取2个文件,你可以用类似的方法来区分它们:

 diff-command <(git show branch1:UNREADME) <(git show master:README) 

<(...) bash语法采用封装命令的输出的情况下,在pipe道中运行它,并将pipe道的文件path置于命令行上。

例如,如果您正在为branchA结帐,则可以使用以下命令:

 git diff branchB path/to/common/file/between/branches.txt 

然后你可以编辑差异,如果你想要一个更改的子集,或保持原样,并将git apply作为补丁git apply diff。 至于这样做的GUI工具,希望别人会有一个build议。

从文档中 ,您需要在.git / config文件中使用类似于以下内容的内容:

 # Our diff algorithm [diff] external = opendiff