将Jekyll部署到Github页面
我已经用Jekyll在本地建立了一个站点,并将其推到了一个新的主repo(username.github.com),该站点运行良好。我的问题是,如何将可部署部分,即_站点目录,移动到gh pages分支中?或者更确切地说,该目录的内容(如果这是部署的最佳方式) 我计划使用自定义域。我的工作流程是在主分支(可能是一些功能分支)中工作,然后将编译的结果推(合并)到gh pages分支中。听起来对吗将Jekyll部署到Github页面,github,jekyll,github-pages,Github,Jekyll,Github Pages,我已经用Jekyll在本地建立了一个站点,并将其推到了一个新的主repo(username.github.com),该站点运行良好。我的问题是,如何将可部署部分,即_站点目录,移动到gh pages分支中?或者更确切地说,该目录的内容(如果这是部署的最佳方式) 我计划使用自定义域。我的工作流程是在主分支(可能是一些功能分支)中工作,然后将编译的结果推(合并)到gh pages分支中。听起来对吗 我有一个艰难的时间通过文件来解决它,将感谢任何帮助,谢谢 根据问题中的详细信息,您的工作流程听起来不正
我有一个艰难的时间通过文件来解决它,将感谢任何帮助,谢谢 根据问题中的详细信息,您的工作流程听起来不正确 如果您已将基于Jekyll的站点推送到
username.github.io
存储库,则不需要gh pages
分支。只有希望代码和网站位于同一存储库中的存储库才需要gh页面
分支。GitHub页面将负责为您运行Jekyll,并在这两种情况下为编译后的站点提供服务
GitHub页面确实以非常特定的方式运行Jekyll,以确保其安全。如果您在Jekyll站点上使用自定义插件,那么您需要将编译后的站点(您提到的\u site
目录)存储在主分支上,并将源代码存储在其他分支中
总之,您的工作流应该在本地存储库中工作-在
master
分支或要素分支中(根据需要将要素分支合并到本地master
分支中)-并且在准备发布时,将您的本地存储库推送到GitHub上的master
分支。您希望执行的操作与工作原理非常相似。让我向你解释一下你是如何做到这一点的
您希望将\u站点
中的数据部署到分支机构gh页面
。因此,您的第一步是将存储库username.github.com
的默认分支设置为gh页面,而不是master
或source
(基本上是您想要的)。您现在需要做的是在Rakefile
中编写任务,将\u站点的内容复制到分支gh页面
。完成后,您可以自动执行推送过程或手动执行推送过程。这样,当您推送默认分支时,GitHub将不会构建您的网站,而只是为\u站点中的静态页面提供服务器
如果您想了解脚本是如何工作的,您应该看看Octopress中的Rakefile
。它有两个任务称为generate
和deploy
。当您运行rake generate
时,它将运行jekyll--no auto
,参数用于将代码放入名为\u deploy
的目录中,当您运行rake deploy
时,它将\u deploy
的内容复制到分支gh页面
,并进行提交。就个人而言,我非常喜欢这个过程,但我还没有在我的Jekyll网站上实现它。试试我的gem。您只需安装并运行:
gem install jgd
jgd
完成了!您的站点已构建并部署到gh页面
。而且jgd
与travis ci或任何其他ci服务器完美集成
这篇文章详细解释了这种机制:您不想对文件夹\u站点
中的文件进行任何更改<代码>\u站点
is were Jekyll保存它生成的静态html页面。它们将在下次Jekyll服务器重新生成站点时自动覆盖。例如,如果创建新的博客文章,服务器会看到新文件(或更新的文件),然后服务器会使用其中的新内容重新生成静态页面。这就是你的新博客文章在页面顶部的方式
将\u站点
添加到.gitignore
文件被认为是最佳做法。没有必要将该目录推送到您的repo,因为一旦它们到达github的服务器,它就会被覆盖
我认为您要做的是签出一个新分支,进行更改,然后将其合并到gh页面
分支。您的工作流程应该是在开发或功能分支中工作,然后只将构建的文件推送到主分支,以便Github页面提供服务
为此:
开始您的开发
分支,所有更改都已准备就绪,可以进行构建并投入使用
在您的开发分支中运行:rm-rf\u站点
(这会将旧构建的文件删除到\u站点文件夹中)
运行git clone-b master“git config remote.origin.url”\u site
(这将为生成的文件创建一个主分支)
jekyll build
(构建您的站点)cd\u站点
触摸CNAME
主
上,您的工作文件将在开发
或功能分支上
我为此挣扎了一段时间,所以如果您想使用它,请创建一个脚本: