首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法在Git中比较两个独立分支中的文件

无法在Git中比较两个独立分支中的文件
EN

Stack Overflow用户
提问于 2009-05-27 16:47:30
回答 4查看 42.9K关注 0票数 58

我在branchA中有FileA,在branchB中有FileB。

问题是我一次只能访问一个文件。我希望能够比较FileMerge或meld的文件,因为他们是唯一的diffTools whichI找到Mac。

如何通过meld/files进行比较合并这两个文件

解决:第一个开发的问题: FileMerge不允许标准输入

Masi:您可以使用opendiff to allow FileMerge从标准输入中获取文件。所以下一个问题是如何让git的diff工具使用opendiff。

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-05-27 19:22:49

您可以使用"git mergetool“进行合并,在现代git (即1.6.3版及更高版本)中使用"git difftool”使用图形工具进行比较。当然,您必须首先配置它们,但它们会做一些自动检测(当然,带有一些硬编码的首选项),如果我没记错的话,还内置了对opendiff的支持。

当然,您也可以像使用普通的"git diff“一样使用图形工具(opendiff / FileMerge),例如

代码语言:javascript
复制
prompt> git difftool somebranch:UNREADME otherbranch:README
票数 66
EN

Stack Overflow用户

发布于 2009-05-27 17:02:33

git支持将分支名称作为存储库路径的一部分。例如,如果您的存储库中有以下文件,README仅适用于masterUNREADME仅适用于branch

代码语言:javascript
复制
master:README

branch:UNREADME

您可以通过git使用以下命令来比较它们:

代码语言:javascript
复制
git diff branch:UNREADME master:README

您可以使用git show将存储库工件转换为标准输出

代码语言:javascript
复制
git show branch1:UNREADME

因此,如果您的外部diff实用程序可以在bash提示符下接收两个文件,则可以使用以下命令来比较它们:

代码语言:javascript
复制
diff-command <(git show branch1:UNREADME) <(git show master:README)

其中,<(...) bash语法获取包含的命令的输出,在管道中运行它,并将管道的文件路径放在命令行上。

票数 61
EN

Stack Overflow用户

发布于 2009-05-27 16:54:48

例如,如果您当前正在签出到branchA,则可以使用以下命令:

代码语言:javascript
复制
git diff branchB path/to/common/file/between/branches.txt

然后,如果您想要更改的子集,可以编辑diff,或者将其保留为原样,然后将diff作为补丁进行git apply。至于一个能做到这一点的GUI工具,希望其他人能给出一个建议。

票数 37
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/916822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档