变基拉取请求
您可能会发现您的拉取请求 (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
远程后,您可以变基您的拉取请求的分支
$ 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 以更新您的拉取请求。
由于变基会重写 Git 历史记录,因此您需要使用强制推送
$ git push --force-with-lease
您在 GitHub 上的拉取请求现已更新。这将自动触发对您所做更改的测试。您应在测试完成后查看您的拉取请求的状态,以确定是否需要进一步更改。
获取变基帮助
如果您在变基拉取请求时需要任何帮助,或者您有其他与开发相关的问题,请访问Ansible 通信指南,了解如何联系社区。
另请参阅
- Ansible 开发周期
有关路线图、打开拉取请求、Ansibullbot 等的更多信息