重新基线拉取请求

您可能会发现您的拉取请求 (PR) 已过时,需要重新基线。这可能出于多种原因

  • 您在 PR 中修改的文件与已合并的更改存在冲突。

  • 您的 PR 已经过时,自动化测试基础设施发生了重大更改。

重新基线用于创建 PR 的分支将解决这两个问题。

配置您的远程仓库

在重新基线 PR 之前,您需要确保已配置正确的远程仓库。这些说明适用于 GitHub 上的任何存储库,包括集合存储库。在其他平台(bitbucket、gitlab)上,相同的原理和命令适用,但语法可能不同。我们以 ansible/ansible 存储库为例。在其他存储库中,分支名称可能不同。假设您以通常的方式克隆了您的 fork,则 origin 远程仓库将指向您的 fork

$ git remote -v
origin  [email protected]:YOUR_GITHUB_USERNAME/ansible.git (fetch)
origin  [email protected]:YOUR_GITHUB_USERNAME/ansible.git (push)

但是,您还需要添加一个指向上游存储库的远程仓库

$ git remote add upstream https://github.com/ansible/ansible.git

这将使您拥有以下远程仓库

$ git remote -v
origin  [email protected]:YOUR_GITHUB_USERNAME/ansible.git (fetch)
origin  [email protected]:YOUR_GITHUB_USERNAME/ansible.git (push)
upstream        https://github.com/ansible/ansible.git (fetch)
upstream        https://github.com/ansible/ansible.git (push)

检查分支的状态应显示您的 fork 与 origin 远程仓库是最新的

$ git status
On branch YOUR_BRANCH
Your branch is up-to-date with 'origin/YOUR_BRANCH'.
nothing to commit, working tree clean

重新基线您的分支

配置好 upstream 远程仓库后,您可以重新基线 PR 的分支

$ git pull --rebase upstream devel

这将在上游 devel 分支中所做的更改的基础上重新应用您分支中的更改。如果存在合并冲突,系统会提示您在继续之前解决这些冲突。

重新基线后,分支的状态会发生变化

$ git status
On branch YOUR_BRANCH
Your branch and 'origin/YOUR_BRANCH' have diverged,
and have 4 and 1 different commits each, respectively.
  (use "git pull" to merge the remote branch into yours)
nothing to commit, working tree clean

不用担心,这是重新基线后的正常现象。您应该忽略 git status 中使用 git pull 的说明。我们将在下一节中介绍接下来该怎么做。

更新您的拉取请求

现在您已经重新基线了分支,需要将更改推送到 GitHub 以更新您的 PR。

由于重新基线会重写 Git 历史记录,因此您需要使用强制推送

$ git push --force-with-lease

您在 GitHub 上的 PR 现已更新。这将自动触发对更改的测试。在测试完成后,您应该检查 PR 的状态,以查看是否需要进一步更改。

获取重新基线帮助

如果您需要任何关于重新基线 PR 的帮助,或者您有任何其他与开发相关的问题,请访问 Ansible 通信指南,了解如何联系社区。

另请参阅

Ansible 开发周期

有关路线图、打开 PR、Ansibullbot 等的信息