
我目前的分支使用方式是下面这种模式:
- main 不做任何改动,仅用于同步上游改动。
- blog 分支用作博客最终成品分支,用于构建博客最终产物。
- 配置的 GitHub Actions 也是根据该分支的 push 动作构建并推送博客。
- 其他诸如不想触发 GitHub Actions 的草稿 draft/* 分支等。
合并操作流程
基于上面的流程,梳理出一个可行的同步上游更新流程。
- 切换到 main 分支
git checkout main
- main 分支设置上游源
# 这里只需要设置一次就即可
git remote add astro-paper https://github.com/satnaing/astro-paper.git
- 从指定的上游源 astro-paper 拉取 main 分支代码到当前分支
git pull astro-paper main
- 创建合并分支
# 切换到当前博客分支
git checkout blog
git checkout -b blog-merge
- 合并 main 分支到合并分支
- 推荐使用 Jetbrains IDE,我比较习惯使用可视化工具。
- 一般都会有少量冲突。
- 如果是大版本更新,此步需要解决大量合并冲突。
大版本更新存在大量合并冲突
合并完成
到这步基本就完成上游分支合并了。合并完成后,可以修改合并分支为新的博客分支,或者把合并分支 merge 到博客分支都可以。
最后
astro-paper 也有一篇文章描述如何更新依赖,可以参考该流程合并上游更新。
fatal: refusing to merge unrelated histories
如果出现上面这个问题,说明当前分支和上游分支没有关联。加上 --allow-unrelated-histories
就可以。
git pull astro-paper main --allow-unrelated-histories