1

在我的工作场所,我们首先创建一个分支,在我们的 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 或历史重写。

4

1 回答 1

0

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

于 2015-09-19T16:07:24.977 回答