无法在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