对拉取请求进行变基
你可能会发现你的拉取请求 (PR) 已过时,需要进行变基。这可能是由以下几个原因造成的:
你在 PR 中修改的文件与已经合并的更改发生了冲突。
你的 PR 提交时间较早,导致自动化测试基础设施发生了重大变更。
对创建 PR 所使用的分支进行变基将解决这两个问题。
配置远程仓库
在对 PR 进行变基之前,你需要确保配置了正确的远程仓库。这些指令适用于 GitHub 上的任何仓库,包括 collections 仓库。在其他平台(如 bitbucket, gitlab)上,同样的原理和命令也适用,但语法可能会有所不同。我们这里以 ansible/ansible 仓库为例。在其他仓库中,分支名称可能不同。假设你以常规方式克隆了你的 fork,那么 origin 远程仓库将指向你的 fork
$ git remote -v
origin git@github.com:YOUR_GITHUB_USERNAME/ansible.git (fetch)
origin git@github.com:YOUR_GITHUB_USERNAME/ansible.git (push)
但是,你还需要添加一个指向上游 (upstream) 仓库的远程仓库
$ git remote add upstream https://github.com/ansible/ansible.git
完成后,你应该拥有以下远程仓库
$ git remote -v
origin git@github.com:YOUR_GITHUB_USERNAME/ansible.git (fetch)
origin git@github.com: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 历史,你需要使用强制推送 (force push)
$ git push --force-with-lease
现在你 GitHub 上的 PR 已更新。这将自动触发对你的更改进行测试。在测试完成后,你应该检查 PR 的状态,看是否需要进一步的修改。
获取变基帮助
如果你在对 PR 进行变基时需要任何帮助,或者有其他与开发相关的问题,请访问 Ansible 沟通指南 了解如何联系社区。
另请参阅
- Ansible 开发周期
关于路线图、提交 PR、Ansibullbot 等更多信息