为什么将.jityll网站的_site-directory放在.gitignore中?

Ott*_*ger 27 github gitignore jekyll

Jekyll的文档告诉我,Jekyll站点的_site-directory包含我在运行后创建的站点的编译版本

Jekyll build
Run Code Online (Sandbox Code Playgroud)

有几篇文章建议我在我的.gitignore文件中包含_site-directory,因为"它只包含我网站的编译版本".(这是一些文章推荐的内容.所以,我不确定我是否理解Jekyll的一些概念或Git的一些概念.

如果_site-directory包含网站的编译版本,那么服务器上的那个不应该提供最终的网站吗?我明白为什么你把源代码放在github上以及如何处理它,但是在github页面的情况下,Github不是版本控制系统而是文件托管系统,文件托管系统应该托管我工作的编译版本来提供它通过MyUsername.github.io给用户,对吗?

我的问题是:不应该只是我部署到Github的我的Jekyll网站的_site-directory,因为那应该是github为用户提供的编译源代码?那么,我不应该在.gitignore文件中添加任何其他内容除了_site-directory之外?

如果我弄错了:通过编译我的网站有什么意义

Jekyll build
Run Code Online (Sandbox Code Playgroud)

如果我不使用编译的源代码?

Dav*_*uel 20

两种解决方案

你不使用Jekyll插件(或只使用github页面支持的插件)

只有在需要在本地(jekyll buildjekyll serve)测试时才构建站点.生成的代码(in _site)将不会被版本化,因为github页面将从源生成页面.

  • 把_site放到.gitignore
  • 将源推送到github页面

你使用Jekyll插件

在这种情况下,您需要在本地构建,因为Github页面无法使用插件完成工作.

  • 杰基尔在当地建造
  • 把_site放到.gitignore
  • 在一个分支中提交您的源
  • 将您的_site提交到另一个分支

有关更多说明,请参阅此帖子.

  • @Otterfinger这里的关键点是,如果你在GitHub页面上托管(没有插件),你不需要跟踪`_site`,因为GitHub Pages会自动从你的源代码构建/生成网站,所以当你访问`username.github.io`你得到编译版本,从你在repo中的源自动生成. (2认同)

Mar*_*189 6

我认为您感到困惑的一点是大多数教程都讨论了至少两个不同的存储库。

  1. source code您的网站,这是你打电话Jekyll build
  2. 编译result,这就是你把一个内容中的_site目录

那么_site在情况 1 中忽略是有意义的。出于与您通常忽略编译结果相同的原因:它们不打算被跟踪,因为它们可能会在每次编译之间更改而不更改源,因此您必须在每次构建后提交,尽管没有任何(可见的)改变。

对于存储库 2,您当然必须_site在构建后使用存储库 1 中的内容更新它。

话虽如此,您当然可以通过使用masterfor_site和另一个分支的内容将 1. 和 2. 合并到一个存储库中,例如source用于具有Jekyll构建文件的项目,这里忽略_sitemaster在更改后使用其内容更新分支。