如何通过 Pull Request 执行 git 回滚?

How to perform a git rollback via a Pull Request?

我们严格使用 PR 来对我们的 production 分支进行更改(正如您所愿)。我的假设是回滚意味着在合并 feature 主题分支之前创建一个 rollback 分支,如果我们需要,我们可以通过 rollback PR 回滚。然而,这并不像我想的那样有效。

创建回滚分支:

git checkout 6af89ed -b rollback-prod

合并功能分支:

# production branch
git merge new-feature

回滚:

# production branch
git merge rollback-prod
Already up-to-date.

如您所见(如果我错了请纠正我)因为提交已经存在于 production 分支中,它会中继 Already up-to-date.

我面临的问题是,此回滚需要通过我们的 GUI git 工具 (bitbucket) 进行。所以手动命令修复并不是一个真正的选择。

是否有通过 PR 回滚到提交的推荐方法?

编辑 1:

我想说清楚 rollback 需要提前创建,这样 Ops 就不必在回滚时接触命令行..假设这是可能的,也许不是。

您可以在当前 master(或您需要开始回滚的任何地方)创建 rollback 分支,并在您想要的所有提交上使用 git revert撤消。现在您有了一个可以与拉取请求一起使用的分支。

有两种方法可以有效地 "rollback" 在 Git 中提交。一种是执行交互式变基,在其中删除一个或多个提交,另一种是执行 git revert。但是,因为您想通过拉取请求影响回滚,所以唯一的选择是执行 git revert。所以你可以尝试以下方法:

git checkout production
git checkout -b rollback-prod      # create rollback branch from production
git revert 6af89ed^..HEAD          # add revert commit to this branch
git push origin rollback-prod      # push this branch to Bitbucket

现在,您可以在 Bitbucket 中为 rollback-prod 分支创建拉取请求。完成后,6af89ed 提交将被有效还原。