维护者工作流程#

此页面适用于维护者——我们这些将我们自己或其他人的更改合并到上游存储库中的人。

作为维护者,您完全掌握了开发工作流程中的基本内容。

将存储库链接到上游存储库中的说明添加了对上游存储库具有只读访问权限的远程。作为维护者,您拥有读写访问权限。

最好让您的上游遥控器有一个可怕的名字,以提醒您它是一个读写遥控器:

git remote add upstream-rw [email protected]:matplotlib/matplotlib.git
git fetch upstream-rw

整合变更#

假设您有一些更改需要进入主干 ( upstream-rw/main)。

更改位于您当前所在的某个分支中。例如,您正在查看某人的更改,如下所示:

git remote add someone https://github.com/someone/matplotlib.git
git fetch someone
git branch cool-feature --track someone/cool-feature
git checkout cool-feature

因此,现在您在分支上,将更改合并到上游。本节的其余部分假设您在此分支上。

一些提交#

如果只有少数提交,请考虑重新定位到上游:

# Fetch upstream changes
git fetch upstream-rw
# rebase
git rebase upstream-rw/main

请记住,如果您执行 rebase 并推送,则必须手动关闭任何 github 拉取请求,因为 github 将无法检测到更改已被合并。

一长串的提交#

如果有更长的相关提交系列,请考虑合并:

git fetch upstream-rw
git merge --no-ff upstream-rw/main

合并将被 github 检测到,并应自动关闭任何相关的拉取请求。

注意--no-ff以上。这迫使 git 进行合并提交,而不是进行快进,以便这些提交集从主干分支分支,然后通过合并重新加入主历史记录,而不是看起来直接在主干之上进行。

查看历史记录#

现在,无论哪种情况,您都应该检查历史记录是否合理,并且您有正确的提交:

git log --oneline --graph
git log -p upstream-rw/main..

上面的第一行只是以紧凑的方式显示历史,并带有历史图的文本表示。第二行显示提交日志,不包括可以从主干 ( upstream-rw/main) 访问的提交日志,包括可以从当前 HEAD 访问的提交日志(.. 在末尾暗示)。因此,与主干相比,它显示了该分支独有的提交。该-p选项以补丁形式显示这些提交的差异。

推送到主干#

git push upstream-rw my-new-feature:main

这会将my-new-feature这个存储库中的main 分支推送到存储库中的分支upstream-rw