11

我的工作流程:

  • 从主分支
  • 在我的分支工作,经常提交(100+)
  • 在我的分支中完成工作后,将 master 合并到我的分支中,解决所有冲突。
  • 合并回master之前的代码审查时间

对于代码审查,我需要显示两个头之间的差异并压缩/组织我的提交(大约 5 次提交)。这项任务的最佳 GUI(跨平台?)是什么?

4

4 回答 4

9

适用于 Windows 和 Mac的Sourcetree免费 Git GUI支持这一点

或者,要在没有 GUI 的情况下执行此操作,您可以运行

 git rebase --interactive --autosquash

因为您使用以 !squash 开头的提交消息进行提交(当这些中间提交是关于同一任务时)
请参阅“ Trimming GIT Checkins/Squashing GIT History ”。

于 2011-10-08T07:32:04.467 回答
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...
于 2012-08-21T10:25:29.550 回答
0

在 Linux 上,我最喜欢的两个 git GUI 是gitgmeld。要在您的案例中获得正确的代码审查差异,请启动 gitg 并在您合并的 master 中找到最新的提交(重要的是,您不希望与当前的 master 负责人比较,以防 master 自您上次合并以来已经进步)。复制此 SHA1 并将其放入您的git difftool

git difftool -t meld <SHA1>

要设置它以便您不必每次都将 meld 指定为 difftool,只需在配置中设置它:

git config --global diff.tool meld
于 2011-10-09T06:56:53.047 回答
0

Eclipse 可以做比较部分。您可以右键单击项目并选择

Team->Advanced->Synchronize With...->(branch you want to compare against)

这向您显示了 2 个分支之间的差异。但是,我知道的 git 和任何 git GUI 都不支持压缩提交,恕我直言太糟糕了。

所以我最终做了一个

git rebase --interactive HEAD~3 

(如果我有 3 个提交,我想压缩)。

于 2012-03-07T08:23:08.210 回答