维护者工作流程#

此页面适用于维护者——那些将自己或他人修改合并到上游存储库的人。

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

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

最好让您的上游远程具有一个可怕的名称,以提醒您它是一个读写远程。

git remote add upstream-rw git@github.com:scikit-image/scikit-image.git
git fetch upstream-rw

集成更改#

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

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

git remote add someone https://github.com/someone/scikit-image.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

请记住,如果您进行重新定位并推送,则必须手动关闭任何 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 分支推送到 upstream-rw 存储库中的 main 分支。