【问题标题】:Any gui for git merge (w squash)? [closed]git合并的任何gui(带壁球)? [关闭]
【发布时间】:2011-12-03 10:34:14
【问题描述】:

我的工作流程:

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

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

【问题讨论】:

  • 我怀疑您不需要显示两个分支之间的差异,因为如果在合并和审查之间在 master 上进行了更多提交,您希望将它们排除在外。最好只显示分支上引入的更改,不包括 master 上引入的任何更改。然后您可以随时合并,而不必在审核之前立即进行。

标签: git user-interface merge branch squash


【解决方案1】:

Sourcetree 适用于 Windows 和 Mac 的免费 G​​it GUI supports this。

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

 git rebase --interactive --autosquash

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

【讨论】:

  • 此命令是在项目历史记录中将提交永久压缩在一起,还是仅出于审查目的以这种方式显示它们?
  • @JonathanHartley 它会压缩提交,但是一旦你不需要压缩的提交,你可以重置。
  • @Andrew 感谢您对这个已有 8 年历史的答案的编辑。
【解决方案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...

【讨论】:

    【解决方案3】:

    在 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
    

    【讨论】:

      【解决方案4】:

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

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

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

      所以我最终做了一个

      git rebase --interactive HEAD~3 
      

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

      【讨论】:

        猜你喜欢
        • 2010-11-30
        • 1970-01-01
        • 2018-04-15
        • 1970-01-01
        • 2014-07-27
        • 2017-09-23
        • 2018-04-02
        • 2012-08-01
        • 1970-01-01
        相关资源
        最近更新 更多