维护者工作流程#
此页面是为维护者准备的——我们这些将自己或他人的更改合并到上游存储库中的人。
作为一名维护者,您完全掌握了 开发工作流程 中的基本内容。
将您的存储库链接到上游存储库 中的说明添加了一个对上游存储库具有只读访问权限的远程。作为一名维护者,您拥有读写权限。
最好为您的上游远程设置一个可怕的名称,以提醒您它是一个读写远程
git remote add upstream-rw git@github.com:scikit-image/scikit-image.git
git fetch upstream-rw
整合更改#
假设您有一些更改需要进入 trunk ( 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 进行合并提交,而不是进行快进,以便这组提交从 trunk 分支出来,然后通过合并重新加入主历史记录,而不是看起来像直接在 trunk 之上进行的。
检查历史记录#
现在,在任何一种情况下,您都应该检查历史记录是否合理,并且您拥有正确的提交
git log --oneline --graph
git log -p upstream-rw/main..
上面的第一行仅以紧凑的方式显示历史记录,并带有历史图的文本表示。第二行显示不包括可以从 trunk ( upstream-rw/main
) 到达的提交的提交日志,并包括可以从当前 HEAD 到达的提交(以末尾的 ..
表示)。因此,它显示了与 trunk 相比,此分支独有的提交。 -p
选项以补丁形式显示这些提交的差异。
推送到 trunk#
git push upstream-rw my-new-feature:main
这将此存储库中的 my-new-feature
分支推送到 upstream-rw
存储库中的 main
分支。