Léo*_* 준영 59 unix git diff merge
我在branchA中有FileA,在branchB中有FileB.
问题是我一次只能访问一个文件.我希望能够通过FileMerge或meld来比较这些文件,因为它们是我为Mac找到的唯一的diffTools.
你怎么能通过meld/FileMerge来区分两个文件?
[已解决]:第一个问题: FileMerge不允许标准输入
Masi:您可以使用opendiff来允许FileMerge从标准输入中获取文件.所以下一个问题是找到如何使用git的diff工具来使用opendiff.
第二个开发的问题:使Git的diff工具在Mac中使用opendiff
Jak*_*ski 66
您可以使用" git mergetool "进行合并,并使用现代git(意思是版本1.6.3及更高版本)" git difftool "进行比较,使用图形工具.当然你必须首先配置它们,但是它们会做一些自动检测(当然还有一些硬编码的首选项),如果我没记错的话,内置了opendiff支持.
然后你当然可以像使用普通的"git diff"一样使用你的图形工具(opendiff/FileMerge),例如
prompt> git difftool somebranch:UNREADME otherbranch:README
Run Code Online (Sandbox Code Playgroud)
Kyl*_*ton 61
git支持分支名称作为存储库路径的一部分.例如,如果您的存储库中有以下文件,则README
仅在以下文件上master
,并且UNREADME
仅在branch
:
master:README
branch:UNREADME
Run Code Online (Sandbox Code Playgroud)
你可以通过git与它们区分:
git diff branch:UNREADME master:README
Run Code Online (Sandbox Code Playgroud)
您可以使用git show
以下标准获取标准输出的存储库工件:
git show branch1:UNREADME
Run Code Online (Sandbox Code Playgroud)
因此,如果外部diff实用程序可以在bash提示符下获取2个文件,则可以使用以下内容对它们进行区分:
diff-command <(git show branch1:UNREADME) <(git show master:README)
Run Code Online (Sandbox Code Playgroud)
在<(...)
bash语法获取所附命令的输出的情况下,在管道中运行它并将管道的文件路径放在命令行上.
Jar*_*die 37
例如,如果您当前结帐到branchA,则可以使用以下命令:
git diff branchB path/to/common/file/between/branches.txt
Run Code Online (Sandbox Code Playgroud)
然后,如果您想要更改的子集,则可以编辑差异,或者将其保留原样,并将git apply
差异作为补丁.对于这样做的GUI工具,希望其他人会在那里有一个建议.