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
如果我不使用已编译的源代码?
答案 0 :(得分:20)
两种解决方案:
只有在您需要在本地(jekyll build
或jekyll serve
)进行测试时,才能构建您的网站。生成的代码(在_site
中)不会被版本化,因为github页面将从源生成页面。
在这种情况下,您需要在本地构建,因为Github页面无法使用插件完成工作。
有关详细说明,请参阅 this post 。
答案 1 :(得分:3)
我认为您感到困惑的一点是,大多数教程至少讨论两个不同的存储库。
source code
,这是您致电Jekyll build
result
,这是您放置_site
目录的内容的那个然后在情况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)。