本地仓库分支:origin
远端仓库分支:upstream
切到非 master 分支上,比如 dev
# 本地操作
git branch -D master
git fetch upstream master::master
git checkout master
# 这步是拉取远端 stable 到 master 上,可能会出错误
# fatal: Not possible to fast-forward, aborting
git pull upstream stable
# 禁用 fast-forward
git pull --no-ff upstream stable
# 截至到这边,stable 新增的 commits 会合并到本地 master 上了
# 没权限的话要给远端仓库提交合并的 PR,有权限可以直接推送到 git push upstream master 分支上
# 没权限场景下推送代码的流程
git push origin master
# 如果远端 master 分支有新的 commit,则需要强制推送
git push origin master -f
# 此时会发现远端的本地仓库更新了(远端的本地仓库指的是自己 fork 的仓库,即 origin)
# 那我们要 checkout 一个合并的分支并提交给远端仓库(远端仓库指的是 upstream)
git checkout -b merge_stable_to_master
git push --set-upstream origin merge_stable_to_master
# 一般 github 上会提示一个合并分支的请求,如果没有弹出请求,则需要手动提 PR
手动提 PR 需要到 github 页面上操作:
注意:需要在自己的仓库内点 New pull request,然后选择要合并到 upstream/master 的分支,origin/merge_stable_to_master