维护者工作流程#
此页面适用于维护者——那些将自己或他人修改合并到上游存储库的人。
既然您是维护者,您完全掌握了 开发工作流程 中的基本内容。
将您的存储库链接到上游存储库 中的说明添加了一个远程,它对上游存储库具有只读访问权限。作为维护者,您拥有读写权限。
最好让您的上游远程具有一个可怕的名称,以提醒您它是一个读写远程。
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
分支。