[英]git visual diff between branches
这个答案非常适合查看检入 git 的两个文件之间的视觉差异: 如何使用视觉差异程序查看“git diff”输出?
但是,我希望看到两个分支之间的视觉差异。 到目前为止,我最好的选择似乎是:
git diff --name-status master dev
这不是很有用,也不是很直观。
那里有更好的吗?
git diff branch1..branch2
这将比较每个分支的提示。
如果你真的想要一些 GUI 软件,你可以尝试像SourceTree这样支持 Mac OS X 和 Windows 的软件。
要查看两个分支之间所有差异的视觉差异,我喜欢合并两个分支 - 不提交合并 - 然后使用git gui
或 git Extensions 来概述差异。
用于合并而不提交的 Git 命令行:
git checkout branchA git merge --no-commit --no-ff branchB
然后完成后,您可以撤消合并
git merge --abort
(h/t to @jcugat 的评论)
如果您使用的是 Intellij Idea IDE,则可以在分支中使用 compare 选项。
您也可以使用 gitk 轻松完成此操作。
> gitk branch1 branch2
首先单击 branch1 的尖端。 现在右键单击 branch2 的尖端并选择 Diff this->selected。
对于那些在 Windows 上使用 TortoiseGit 的人,您可以通过这个相当晦涩的功能获得一些视觉上的比较:
shift
并右键单击它ctrl
选择两个分支进行比较资料来源: http : //wikgren.fi/compare-diff-branches-in-tortoise-git-or-how-to-preview-changes-before-doing-a-merge/
如果您使用的是 OSX 或 Windows 7+, Atlassian SourceTree 对此非常有效。 这是免费的。
您可以在并行差异设置中看到分阶段更改,并且您可以轻松地将本地与远程和任何其他两个分支进行比较。 选择多个文件时,Diff将显示如下:
假设您已经签出一个功能分支,并且想要查看与“master”的差异,请右键单击“master”分支并选择“与当前的差异”
不幸的是,它似乎不会很快在 *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
如果您使用的是 github,您可以使用该网站:
github.com/url/to/your/repo/compare/SHA_of_tip_of_one_branch...SHA_of_tip_of_another_branch
这将向您展示两者的比较。
在GitExtensions 中,您可以按住 Ctrl键选择修订网格中的两个分支。 然后您可以看到这些分支之间不同的文件。 当您选择一个文件时,您会看到它的差异。
取自这里
更新
Mac:我现在使用 SourceTree。 彻底推荐。 我特别喜欢你可以上演/不上演帅哥的方式。
Linux:我在以下方面取得了成功:
meld
例如在 Ubuntu 上安装smartgit
:
.deb
这可以完成以下工作:
git-diffall 带有像 meld 这样的 GUI diff 工具。 请参阅此处的第 5 点:
http://rubyglazed.com/post/15772234418/git-ify-your-command-line
这里有一篇关于 git 和 meld 的好文章:http ://nathanhoad.net/how-to-meld-for-git-diffs-in-ubuntu-hardy
如果您使用 Eclipse,您可以直观地将工作区上的当前分支与另一个标签/分支进行比较:
您也可以使用 Perforce 的免费 P4Merge 来执行此操作:
http://www.perforce.com/product/components/perforce-visual-merge-and-diff-tools
但从上述链接的快速总结是:
$ git mergetool
和$ git difftool
来使用 p4merge$ git diff
仍将仅使用默认的内联差异查看器 :)(使用 git 版本 1.8.2 测试)[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\""
git show-branch
您可以使用核心 git 功能做很多事情。 指定要包含在视觉差异中的内容可能会很好。 大多数答案都侧重于提交的逐行差异,其中您的示例侧重于给定提交中受影响的文件的名称。
一个似乎没有解决的视觉问题是如何查看分支包含的提交(无论是共同的还是唯一的)。
对于这个视觉效果,我是git show-branch
忠实粉丝; 它分解出一个组织良好的每个分支的提交表,返回到共同的祖先。 - 要在具有多个分支的存储库上进行尝试,只需键入git show-branch
并检查输出 - 有关示例的文章,请参阅比较 Git 分支之间的提交
以下是如何在 Visual Studio(在 VS 2017 中测试)中查看整个提交之间的视觉差异,而不是单个文件。 不幸的是,它仅适用于一个分支内的提交:在“团队资源管理器”中,选择“分支”视图,右键单击存储库,然后选择“查看历史记录”,如下图所示。
然后当前分支的历史出现在主区。 (在当前分支上作为较早提交结束的分支由标签标记。)现在使用 Ctrl-Left 选择几个提交,然后右键单击并从弹出菜单中选择“比较提交...”。
有关比较 Microsoft 世界中的分支的更多信息,请参阅此 stackoverflow 问题: 使用 Visual Studio 的 git 分支之间的差异。
您还可以使用 vscode 来比较使用扩展 CodeLense 的分支,这已经在此 SO 中得到了回答:如何比较 Visual Studio 代码上的不同分支
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.