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

时间:2015-08-07 06:55:52

标签: github jekyll gitignore

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

Jekyll build

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

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

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

如果我弄错了:通过

编译我的网站有什么意义
Jekyll build

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

4 个答案:

答案 0 :(得分:20)

两种解决方案:

您不使用Jekyll插件(或仅使用supported by github pages

只有在您需要在本地(jekyll buildjekyll serve)进行测试时,才能构建您的网站。生成的代码(在_site中)不会被版本化,因为github页面将从源生成页面。

  • 将_site放到.gitignore
  • 将您的资源推送到github页面

您使用的是Jekyll插件

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

  • Jekyll本地构建
  • 将_site放到.gitignore
  • 在一个分支中提交您的来源
  • 将您的_site提交到另一个分支

有关详细说明,请参阅 this post

答案 1 :(得分:3)

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

  1. 您网站的source code,这是您致电Jekyll build
  2. 的地方
  3. 已编译的result,这是您放置_site目录的内容的那个
  4. 然后在情况1中忽略_site是有道理的。出于同样的原因,你通常会忽略编译结果:它们并不意味着被跟踪,因为它们可能在每次编译之间改变而不改变源,所以你在每次构建之后都必须提交,尽管没有(可见)发生了变化。

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

    尽管如此,您可以将{和1}用于master的内容和另一个分支,例如将1.和2.组合到一个存储库中。对于包含_site构建文件的项目,source,此处忽略Jekyll,然后在更改后使用其内容更新_site分支。

答案 2 :(得分:0)

我相信你可能会以错误的方式看事情,忽略_site是有道理的,因为每当你{_ 1}}你的_site爆炸时,那里的所有内容都会被删除并重新写入。

所以在我看来你想推送到github的是工作目录,因为它在你工作的地方,所有你的更改都被版本化了......加上github进行编译并自动构建网站。

话虽这么说,我通常将_site保留在我的gitignore之外,因为我部署到另一个托管服务,我的部署框架抓取github存储库并从特定分支部署,我需要_site在那里。

答案 3 :(得分:0)

清除_site文件夹,并在每个" jekyll build"上重新生成所有文件。跟踪要删除的文件似乎没有用处。

如果你想把你的jekyll网站作为项目页面(gh-pages)推送到你的github repo,_site文件夹再没有用,因为github上的jekyll安装会自动为你生成_site文件上传(git push)。

_site文件夹仅适用于jekyll网站的本地预览(默认情况下,通常位于localhost:4000)。