You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Jekyll+Git+GitHub Pages使用求助:站点部署与分支管理

解决Jekyll + Git + GitHub Pages协同部署的问题

我来一步步帮你理清这几个关键点,解决你遇到的部署和分支管理问题:

一、如何部署_site文件夹?

你现在的问题是GitHub Pages加载了根目录的index.html,而不是_site里的内容,这是因为GitHub Pages的优先级规则:如果根目录存在静态HTML文件,它会直接加载,而不会触发Jekyll自动构建。这里有两种解决方案:

方案1:让GitHub Pages自动构建(推荐)

这种方式不需要你手动处理_site,GitHub会帮你完成构建和部署:

  1. 删掉仓库根目录的index.html(这个文件会干扰Jekyll的自动构建);
  2. 确保你的仓库里有Jekyll的核心源文件:_config.yml_layouts_posts、页面Markdown文件等;
  3. 打开你的GitHub仓库设置,找到「Pages」选项,将「Source」设置为「main/master分支」,并选择「/(root)」;
  4. 推送你的Jekyll源文件到main/master分支,GitHub会自动运行Jekyll构建,生成并部署_site里的内容。

方案2:手动推送_sitegh-pages分支

如果你习惯本地构建_site,再手动部署,可以用这个方法:

  1. 确保你已经在本地生成了最新的_site文件夹(运行bundle exec jekyll build);
  2. 使用Git子树命令将_site的内容推送到gh-pages分支:
    git subtree push --prefix _site origin gh-pages
    
  3. 到仓库设置的「Pages」选项,将「Source」设置为「gh-pages分支」,选择「/(root)」;
  4. 之后每次本地构建完_site,重复步骤2的命令即可更新部署内容。

二、创建新页面时的Git流程

不管用哪种部署方案,核心流程都是在主分支管理源文件,部署分支(或GitHub自动)处理静态文件

对于自动构建方案:

  1. 切换到main/master分支:git checkout main
  2. 创建新页面(比如在_pages文件夹新建about.md,或直接在根目录新建);
  3. 本地运行bundle exec jekyll serve预览效果,确认没问题;
  4. 提交源文件(注意不要提交_site,把它加到.gitignore里):
    git add .
    git commit -m "Add new about page"
    git push origin main
    
  5. 等待GitHub自动构建部署,几分钟后就能看到新页面了。

对于手动部署方案:

  1. 上述步骤1-4和自动构建一致;
  2. 本地构建生成最新的_sitebundle exec jekyll build
  3. 推送_site到gh-pages分支:git subtree push --prefix _site origin gh-pages
  4. 完成部署,等待GitHub Pages更新。

三、分支管理建议

清晰的分支分工能避免混乱,这里给你一套简单高效的管理方式:

  • main/master分支:这是你的「开发分支」,专门存放Jekyll的所有源文件(配置、布局、文章、页面Markdown等),所有内容修改、新页面创建都在这个分支进行,永远不要在这里存放_site的静态文件(把_site加入.gitignore);
  • gh-pages分支:这是你的「部署分支」,仅用来存放_site生成的静态文件,不需要手动编辑这个分支的内容,完全通过构建命令推送更新;
  • 额外提示:如果需要测试新功能,可以创建临时分支(比如feature/new-theme),测试完成后合并回main/master分支,再进行部署。

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

火山引擎 最新活动