【问题标题】:Github Merge pull request somehow re-wrote historyGithub Merge 拉取请求以某种方式重写了历史
【发布时间】:2015-12-12 05:05:20
【问题描述】:

在我的工作场所,我们首先创建一个分支,在我们的 Github 存储库中为该分支创建一个拉取请求,然后有人对其进行审查并点击“合并拉取请求”来提交代码。这是一个非常标准的工作流程。

通常,当我们点击“Merge pull request”时,Github 会创建一个名为“Merge pull request #1234 from branchname”的新提交,其中包含 2 个父级 - master 的 HEAD,以及 PR 中的最新提交。

今天我像往常一样合并了一个 PR,不知何故 Github 决定不使用 master 的 HEAD 作为父母之一,而是使用一天前的提交(我们每天进行 20 到 30 次提交)。它使用的这个提交是 PR 分支所基于的提交。这导致 master 分支丢失了从那时到此 PR 合并之间的所有提交。

有谁知道这是怎么发生的?这是 Github 的错误吗?还是提交 PR 的开发者做了什么坏事,可能会覆盖 master?我认为所有提交都将简单地合并到 master 中,而无需在 Github 中进行任何 rebase 或历史重写。

【问题讨论】:

  • 我不认为开发人员在这方面可以做任何坏事;您要么在 github 上遇到了错误,要么认为已经将提交推送到 github 的假设不成立(我怀疑是后者)。
  • 是公开的,能链接到相关的commit吗?
  • 您是尝试从命令行远程合并,还是使用 GitHub 的绿色“合并”按钮?
  • 不幸的是,这是一个私人存储库,否则我会链接它。我使用 Githubs 绿色合并按钮合并,我们总是这样合并。
  • Github 包含 master 丢失的所有提交,它们仍在我们的 deploy-staging 和 deploy-prod 分支中(master 在经过测试后合并到这些分支中)

标签: git github merge git-branch git-history-graph


【解决方案1】:

我联系了 Github,结果发现有人意外强制推送到 master,因为最新版本的 git 在强制推送时似乎同时强制推送 master 和您的分支。我们也没有启用受 Githubs 保护的分支 (https://github.com/blog/2051-protected-branches-and-required-status-checks),尽管我们现在这样做是为了防止将来发生这种情况。

【讨论】:

    猜你喜欢
    • 2018-05-02
    • 1970-01-01
    • 2021-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-14
    • 2013-06-09
    • 2016-12-26
    相关资源
    最近更新 更多