【问题标题】:How to merge a pull request without getting a merge commit in the Git history如何合并拉取请求而不在 Git 历史记录中获得合并提交
【发布时间】:2017-05-12 12:29:14
【问题描述】:

在 Github 上,每次我将拉取请求合并到我的基础分支时,我都会得到一个额外的合并提交:

合并拉取请求 #77 ...

我更喜欢在没有这些合并提交的情况下获取 git 历史记录。

我怎样才能做到这一点?

【问题讨论】:

  • git merge --squash
  • 这会将所有提交合并为一个。
  • Jop 正确,然后它将壁球提交作为单个提交应用到您的 HEAD 上,而不创建与“拉取请求”分支的父关系。见here
  • 做一个变基而不是合并,也可以选择压缩提交,但大多数时候并不是真正必要的。这将在当前分支提示之上重新定位并重新应用相同的提交,并避免合并提交。但是,您现在已经重写了历史记录,因此拥有拉取请求来自的存储库的人最好根据您的重写更新他的存储库,否则您稍后会收到具有相同提交的类似拉取请求。
  • @LasseV.Karlsen 我通常不会在合并 PR 后再次使用 PR 分支,所以这对我来说不是问题。

标签: git github


【解决方案1】:

要获得没有任何拉取请求合并提交的 git 历史记录,我可以使用合并按钮(拉取请求页面)并执行变基和合并:

【讨论】:

  • 问题是 'Squash and merge' 和 'Rebase and merge' 都会丢失 gpg 符号
【解决方案2】:

以下是您的选择:

  • 壁球
  • 变基
  • 合并

一个 squash 将产生一个新的提交,代表主分支头部的所有更改。这是变基的一个特例。

rebase 将在主分支的头部产生一个或多个新提交(其中任何一个或全部可能处于“损坏”/不可构建状态)。

合并会创建合并提交,并保留真实发生的历史记录。

这里是选项的文档:https://github.com/blog/2243-rebase-and-merge-pull-requests

【讨论】:

    猜你喜欢
    • 2013-03-24
    • 1970-01-01
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 2020-07-01
    • 1970-01-01
    相关资源
    最近更新 更多