我的工作流程:
- 从主分支
- 在我的分支工作,经常提交(100+)
- 在我的分支中完成工作后,将 master 合并到我的分支中,解决所有冲突。
- 合并回master之前的代码审查时间
对于代码审查,我需要显示两个头之间的差异并压缩/组织我的提交(大约 5 次提交)。这项任务的最佳 GUI(跨平台?)是什么?
我的工作流程:
对于代码审查,我需要显示两个头之间的差异并压缩/组织我的提交(大约 5 次提交)。这项任务的最佳 GUI(跨平台?)是什么?
适用于 Windows 和 Mac的Sourcetree免费 Git GUI支持这一点。
或者,要在没有 GUI 的情况下执行此操作,您可以运行
git rebase --interactive --autosquash
因为您使用以 !squash 开头的提交消息进行提交(当这些中间提交是关于同一任务时)
请参阅“ Trimming GIT Checkins/Squashing GIT History ”。
任何“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...
在 Linux 上,我最喜欢的两个 git GUI 是gitg和meld。要在您的案例中获得正确的代码审查差异,请启动 gitg 并在您合并的 master 中找到最新的提交(重要的是,您不希望与当前的 master 负责人比较,以防 master 自您上次合并以来已经进步)。复制此 SHA1 并将其放入您的git difftool
:
git difftool -t meld <SHA1>
要设置它以便您不必每次都将 meld 指定为 difftool,只需在配置中设置它:
git config --global diff.tool meld
Eclipse 可以做比较部分。您可以右键单击项目并选择
Team->Advanced->Synchronize With...->(branch you want to compare against)
这向您显示了 2 个分支之间的差异。但是,我知道的 git 和任何 git GUI 都不支持压缩提交,恕我直言太糟糕了。
所以我最终做了一个
git rebase --interactive HEAD~3
(如果我有 3 个提交,我想压缩)。