我的工作流程:
对于CODE REVIEW,我需要显示两个头之间的差异并压缩/组织我的提交(在大约5次提交中)。这项任务的最佳GUI(跨平台?)是什么?
答案 0 :(得分:9)
适用于Windows和Mac的Sourcetree免费Git GUI supports this。
或者,如果没有GUI,可以运行
git rebase --interactive --autosquash
因为你提交了以!squash开头的提交消息(当那些中间提交是关于同一个任务时)
请参阅“Trimming GIT Checkins/Squashing GIT History”。
答案 1 :(得分:2)
任何'git diff'命令的输出都可以使用'git difftool'命令在GUI工具中显示。
首先,我们想要的'diff'命令:显示'mybranch'上每次提交所引入的累积差异,因为它与'master'分开使用:
git diff master...mybranch
或
git diff master...HEAD
请注意,这排除了同时在master上发生的任何提交,如果您正在查看mybranch,这可能是您想要的。
如果mybranch是你现在的头脑,那么这可以缩写为:
git diff master...
Git将使用'git difftool'将diff命令的输出提供给大约八个已知GUI工具的列表之一。我在OSX上使用kdiff3,过去我也在Linux上愉快地使用它。我更喜欢kdiff3,因为它允许我在需要时进行3向合并,它允许我手动编辑合并的输出以及只选择要使用的数据。
首先安装kdiff3,然后在PATH上添加一个符号链接。对我来说,那是:
ln -s /Applications/kdiff3.app/Contents/MacOS/kdiff3 /usr/local/bin/kdiff3
然后告诉git你想使用kdiff3作为GUI diff工具:
git config --global merge.tool kdiff3
然后在其中查看你的差异:
git difftool master...
答案 2 :(得分:0)
在Linux上,我最喜欢的两个git GUI是gitg和meld。要在您的情况下获取正确的代码检查差异,请启动gitg并找到您合并的master中的最新提交(重要的是,如果自上次合并以来master已经提升,则您不希望与当前的master主管进行区别对待)。复制此SHA1并将其放入git difftool
:
git difftool -t meld <SHA1>
要设置它,所以你不必每次都指定meld作为difftool,只需在config中设置它:
git config --global diff.tool meld
答案 3 :(得分:0)
Eclipse可以做比较部分。您可以右键单击该项目并选择
Team->Advanced->Synchronize With...->(branch you want to compare against)
它显示了两个分支之间的差异。但是,git和我知道的任何git GUI都不支持压缩恕我直言的提交。
所以我最终做了
git rebase --interactive HEAD~3
(如果我有3次提交,我想压缩)。