You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在一个Git仓库上叠加另一个仓库?Jekyll主题自定义文件独立存储实现问询

实现方案

这里给你两种可直接落地的Git实现方式,你可以根据自己的使用习惯选择:

方案1:独立分支管理(最匹配你预期的流程)

该方案无需拆分仓库,自定义内容和主题代码在同一个本地仓库中隔离存储,操作逻辑完全符合你提到的「拉取主题更新后叠加自定义内容即可生效」的需求:

  • 克隆主题仓库到本地
git clone <你的GitLab主题仓库地址> jekyll-site
cd jekyll-site
  • 从主题的默认分支(通常为main/master)新建专属的自定义分支,后续所有自定义修改都在该分支上操作:
git checkout -b my-site
  • 在my-site分支中添加、修改所有你需要的自定义文件,完成后提交到该分支即可,不要将该分支推送到主题的上游仓库,就不会污染主题本身的版本管理:
git add .
git commit -m "添加自定义站点配置、内容文件"
  • 后续需要拉取主题的更新修复时,执行以下命令即可自动将你的自定义内容叠加到最新版主题上:
# 切回主题默认分支拉取最新代码
git checkout main
git pull origin main
# 切回自定义分支执行变基,把你的提交叠加到最新主题代码之上
git checkout my-site
git rebase main

若执行rebase时出现文件冲突,只需要解决自定义文件和主题更新文件的冲突,之后执行git rebase --continue即可完成更新。如果需要备份你的自定义内容,将my-site分支推到你自己的私有仓库即可。

方案2:自定义内容独立仓库+主题作为子模块(适合自定义内容需要单独归档的场景)

如果你希望自定义内容完全独立为单独的Git仓库,和主题代码彻底隔离,可以用该方案:

  • 先创建你自己的站点私有空仓库,克隆到本地:
git clone <你的自定义站点仓库地址> my-jekyll-site
cd my-jekyll-site
  • 将主题仓库作为子模块添加到站点目录下的指定路径(比如_theme目录):
git submodule add <GitLab主题仓库地址> _theme
  • 修改Jekyll配置_config.yml中的主题路径指向_theme目录,之后所有自定义配置、内容文件都直接存放在站点仓库根目录,这些内容只会提交到你自己的站点仓库,不会进入主题子模块的版本管理。
  • 后续更新主题时只需进入子模块目录拉取最新代码即可:
cd _theme
git pull origin main
cd ..
git add _theme
git commit -m "更新主题到最新版本"

如果需要切换为远程主题让GitLab自动构建,直接修改_config.yml中的remote_theme参数为主题仓库地址即可,无需改动其他自定义文件。

内容的提问来源于stack exchange,提问作者Ender。

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 13:57:04