使用GitHub Pages时理解Jekyll和gh-pages分支

3
我正在使用 Jekyll 和 GitHub Pages(具体来说,是项目页面)。我创建了 2 个分支:
  1. master
  2. gh-pages
文档解释说,网站内容存储在gh-pages分支中,并且该内容将由Jekyll渲染。输出将在诸如username.github.io/project-name之类的URL上可用。
如果我在本地的master分支中运行jekyll new mysite,那么它会在该分支中创建_config.yml、_posts、_sites等文件夹。此时,如果我运行jekyll serve,我可以在localhost:4000看到一个基本的站点(非常好)。
我的问题是:
考虑到我当前在master分支中似乎已经可以工作,那么gh-pages分支的目的是什么?a)master分支和b)gh-pages分支应包含什么内容?
提前致谢。

如果您想发布项目网站,则不需要主分支。您只需要gh-pages分支。因此,在创建gh-pages分支后,可以删除主分支。然后,将您的网站内容上传到gh-pages;无论您上传Jekyll文件夹(因此GitHub将构建您的站点)还是上传您的_site文件夹(因此GitHub将仅像Web服务器一样显示您的文件),都没有关系。就这样。 - Virtua Creative
感谢@VirtuaCreative,似乎有两种方法可供选择。请参见此答案。我想知道人们通常在使用Jekyll与GitHub页面时采取哪种方法? - henrywright
不用谢。我认为你需要了解Jekyll的本地构建。假设你想将一个Jekyll网站上传到普通的Apache Web服务器(而不是GitHub Pages),你需要上传Jekyll本地构建的_site文件夹。现在,如果你使用GitHub作为主机,你可以选择自动构建或手动上传。关于GitHub中用户/组织和项目网站的事情是:你可以拥有任意数量的网站,其中一个是用户/组织的,多个是项目的。我建议你阅读这篇文章以获得更好的概述:http://goo.gl/BUq3ME。 - Virtua Creative
如果您没有任何花哨的插件,大多数开发人员的做法是将Jekyll文件夹上传到gh-pages分支,并设置GitHub忽略本地的_site文件夹。如果您不需要master分支,请继续删除它!如果您只需要一个网站,请选择用户网站,而不是项目网站。我之所以这样说,是因为如果您创建了一个项目网站,您将拥有这个域名:username.github.io/project。如果访问者尝试访问username.github.io,他会看到404错误。希望能帮到您! - Virtua Creative
2个回答

4

阅读Github pages文档

如果您想要推送代码并让Github生成您的网站:

您只需要版本控制您的代码而不是生成的页面。因此,只需要一个分支。

  1. 对于用户/组织Github页面 (github.com/username/username.github.io),您将代码发布在 master分支中。
  2. 对于项目页面(github.com/username/projectRepository),您将代码发布在gh-pages中。这里不需要使用master分支。

如果您需要本地生成站点,并仅在Github上发送生成的页面:

您需要对您的代码和生成的页面进行版本控制。因此,需要两个分支。

  1. 用户/组织存储库:基础代码放在code(或者其他命名)分支中,生成的页面放在master中。
  2. 项目存储库:基础代码放在master(或者其他命名)分支中,生成的页面放在gh-pages中。

我可以问一下为什么需要本地2个分支(您的最后一个要点),但是服务器上只需要gh-pages(您的第2步)吗? - henrywright
谢谢更新。关于在GitHub项目页面上使用Jekyll,推荐采用哪种方法? - henrywright
这取决于你是否可以让Github生成你的页面,如果可以,就选择第二种方法。如果你必须在本地生成(例如:因为你使用了Github上没有的插件),那么就选择第四种方法。 - David Jacquel
考虑到Jekyll可以在服务器和本地生成我的页面(我没有使用任何奇特的插件),这是否意味着我应该采用第2种方法(而不是第4种方法)? - henrywright
是的。如果Github为您生成页面,则无需对其进行版本控制。因此,只需要一个gh-pages分支即可。 - David Jacquel

0

根据 Github gh-pages 的描述:

使用原始版本或为您的项目生成一个站点,以快速入门。

gh-pages只是一个特定于 Github 的分支,允许您将其用作您的网站。

这意味着如果您在此页面中有 index.html,您将能够直接在浏览器中查看它。

您可以使用以下链接格式:username.github.io/project_name

更多信息可以在此处找到:https://pages.github.com/


谢谢。所以,mastergh-pages 的内容应该完全相同吗?我是否需要一个 master 分支?文档似乎建议把配置等放入 master 分支,只将内容放入 gh-pages - henrywright
你只能使用 gh-pages 来提供内容(服务于 index.html 或 REAME.md)和你的代码。 - CodeWizard
我不确定我理解你的意思了? - henrywright
你可以在代码和文档中使用同一个分支,这是关键。 - CodeWizard
谢谢。我知道在同一个分支中可以同时使用代码和内容,但我想知道这是否是推荐的做法。如果您阅读此处的第一段,您会发现它提到Web内容放在gh-pages中。它似乎暗示只有内容才会进入此分支,因为它没有提到代码。 - henrywright
如果你愿意,你也可以使用master分支,但这会导致你需要在两个不同的分支中管理代码。 - CodeWizard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接