git分支之间的视觉差异
这个答案非常适合在git中查看两个文件之间的视觉差异: 如何用一个可视化diff程序查看“git diff”输出?
不过,我想看到两个分支之间的视觉差异。 到目前为止,我最好的select似乎是:
git diff --name-status master dev
这是不是很丰富,不是很直观。
那里有什么更好的吗?
使用范围的 git diff
。
git diff branch1..branch2
这将比较每个分支的提示。
如果你真的想要一些GUI软件,你可以尝试像支持Mac OS X和Windows的SourceTree 。
为了看到两个分支之间所有差异的视觉差异,我喜欢合并两个分支而不进行合并,然后使用Git Gui或Git Extensions来获得差异的总览。
Git命令行进行合并而不提交:
git checkout branchA git merge --no-commit --no-ff branchB
如果您使用的是Intellij Idea IDE,则可以使用分支中的比较选项。
你也可以用gitk轻松做到这一点。
> gitk branch1 branch2
首先点击分支1的尖端。 现在右键单击branch2的尖端并selectDiff this-> selected。
对于那些在Windows上使用TortoiseGit的人,你可以通过这个相当模糊的特性进行一些有目的的比较:
- 导航到您要比较的文件夹
- 按住
shift
并右键单击它 - 转到TortoiseGit – >浏览参考
- 使用
ctrl
select两个分支进行比较 - 右键单击您的select,然后单击“比较选定的参考”
资料来源: http : //wikgren.fi/compare-diff-branches-in-tortoise-git-or-how-to-preview-changes-before-doing-a-merge/
如果您使用OSX或Windows 7 +, Atlassian SourceTree可以很好地工作。 这是免费的。
您可以在并行diff设置中看到分阶段更改,并且您可以轻松比较本地与远程和任何其他两个分支。 当select多个文件时,差异显示如下:
假设你已经签出了一个特性分支,并且想要看到“master”的差异,右键单击“master”分支并select“Diff against current”
不幸的是,它似乎不会在任何时候在* nix发行版上可用。
尝试“difftool”(假设你有diff工具设置) – 请参阅https://www.kernel.org/pub/software/scm/git/docs/git-difftool.html
我发现名称状态对摘要很好,但是difftool会迭代更改(而-d
选项会给你目录视图),例如
$ git difftool their-branch my-branch Viewing: 'file1.txt' Launch 'bc3' [Y/n]: ...
或者@ rsilva4用-d
提到,并且默认为你当前的分支,它只是 – 例如与master相比:
$ git difftool -d master..
…是的 – 有很多变化 – https://www.kernel.org/pub/software/scm/git/docs/git-reset.html
在GitExtensions中,您可以按住Ctrl键的同时在修订版网格中select两个分支。 那么你可以看到这些分支之间的文件不同。 当你select一个文件,你会看到它的差异。
从这里采取
如果你使用github,你可以使用这个网站:
github.com/url/to/your/repo/compare/SHA_of_tip_of_one_branch…SHA_of_tip_of_another_branch
这会告诉你两个比较。
UPDATE
我现在使用SourceTree。 彻底推荐。 我特别喜欢你可以舞台/不活动的胖子。
这样做的工作:
git-diffall与像GUI一样的GUI diff工具。 在这里看点5:
http://rubyglazed.com/post/15772234418/git-ify-your-command-line
有一个很好的post关于混帐和融合在这里: http : //nathanhoad.net/how-to-meld-for-git-diffs-in-ubuntu-hardy
你也可以使用Perforce提供的免费的P4Merge来做到这一点:
http://www.perforce.com/product/components/perforce-visual-merge-and-diff-tools
将它与Git集成的细节可以在这里和这里find
但从上面的链接快速总结是:
- 在〜/ .gitconfig文件中join以下内容,然后执行
$ git mergetool
和$ git difftool
来使用p4merge - 请注意,
$ git diff
仍然只是使用默认的行内差异查看器:)(使用git版本1.8.2进行testing)
.gitconfig的更改
[merge] keepBackup = false tool = p4merge [mergetool "p4merge"] cmd = /Applications/p4merge.app/Contents/Resources/launchp4merge "\"$PWD/$BASE\"" "\"$PWD/$REMOTE\"" "\"$PWD/$LOCAL\"" "\"$PWD/$MERGED\"" keepTemporaries = false trustExitCode = false keepBackup = false [diff] tool = p4merge [difftool "p4merge"] cmd = /Applications/p4merge.app/Contents/Resources/launchp4merge "\"$REMOTE\"" "\"$LOCAL\""
如果您使用Eclipse,则可以直观地比较工作空间中的当前分支与另一个标记/分支:
如果你使用优秀的WebStorm编辑器,你可以比较任何你喜欢的分支: