git合并的任何gui(用壁球)?

时间:2011-10-08 04:56:05

标签: git user-interface merge branch squash

我的工作流程:

  • 来自大师的分支
  • 在我的分支机构工作,经常提交(100 +)
  • 当我的分支完成作业时,将master合并到我的分支中,解决所有冲突。
  • 在合并回主人之前的代码审核时间

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

4 个答案:

答案 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是gitgmeld。要在您的情况下获取正确的代码检查差异,请启动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次提交,我想压缩)。