返回

Git与上游项目同步

问题——git子模块更新问题

最近正在将博客从pelican迁移到Hugo,最终选择了主题even,为了管理方便和规范化,我选择了submodule模式clone该项目。在将原作者主题项目添加到本地项目后,才发现别人的项目无法修改提交,于是我fork原作后重新添加,现在修改是可以了,但新的问题是我如何能和原作保持同步更新呢?

设置upstream

在经过一番搜索和学习之后,找到了解决办法,将子模块设置一个新的上游,然后fetch、merge后就可以了,非常简单,代码如下:

cd /hugo-log-path/theme/even

# 这里最好设置https地址,而不是ssh地址,原因是vercel这类平台在拉submodule的时候不支持
# 上游项目是原作者的git地址
git remote add upstream https://github.com/olOwOlo/hugo-theme-even

# 从上游拉取新代码
git fetch upstream

# 从本地上游master分支合并到本地
git merge upstream/master

最后两步的fetch和merge可以合并为一个pull命令

# 从上游拉取master分支合并到本地
git pull upstream master

参考

  1. How do I update or sync a forked repository on GitHub?
  2. 同步复刻
Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy