我试图将Middleman项目部署到我的GitHub用户页面([username] .github.io)。我使用middleman-gh-pages宝石,说明书似乎很简单。
然而,在运行bundle exec rake publish
之后,我的GitHub用户页面仍然显示了404.我看到了GH的构建,它位于' gh-pages'分支。
这是我在发布后的主目录结构。
这是发布后gh-pages分支上的目录结构。
当我导航到[username] .github.io / source / index.html.haml时,我的浏览器会下载haml文件。好像我的gh-pages分支并不是实际提供的内容。还有其他人遇到过这个问题吗?我怎样才能使gh-pages分支成为我访问GitHub用户页面时的服务?
答案 0 :(得分:15)
我看到这个问题已经解决了,但我仍然要花两分钱。
注意:本指南介绍了如何部署项目网站(例如username.github.io/projectname
)。如果您要部署用户网站(例如username.github.io
),则需要调整一些选项。不难理解!
Github Pages将从子文件夹为您的项目网站提供服务。这意味着您无法使用绝对网址引用您的网页和资源。告诉Middleman使用相对URL:
activate :relative_assets
set :relative_links, true
不要忘记使用link_to helper内部链接,不要手动写<a href...
。
确保您的.gitignore
文件列出了构建文件夹。如果没有,请添加:
/build/
Github Pages使用的Jekyll预处理器可能会干扰您的静态网站。要停用Jekyll魔法,请在.nojekyll
下创建一个空白source/
文件。
从项目根目录:
touch source/.nojekyll
你必须做一次例程。
在Github上发布您的项目。
转到build/
目录。如果您没有在项目中使用它,请手动创建它或使用bundle exec middleman build
构建项目。
cd build/
初始化一个空的git repo:
git init .
将您的Github仓库添加为远程:
git remote add origin git@github...git
开始新分支gh-pages
:
git checkout --orphan gh-pages
每次部署更新时,您都必须重复以下步骤。请考虑将它们添加到批处理文件中,这样您就不必手动重复它们。
构建您的项目。
从项目根开始:
bundle exec middleman build
转到构建目录:
cd build/
添加所有文件:
git add -A
提交他们。您不需要在此处提交有意义的提交消息,因为您的提交历史记录存储在项目的主分支中。没有什么需要在这里复制它。
git commit -m build
将它们推送到Github:
git push origin gh-pages
在第一次推送期间,添加-u
:
git push -u origin gh-pages
请注意,Github Pages需要一段时间才能显示您的网站。他们说十分钟,但可能需要几个小时。要有耐心,尽管你总是有机会搞砸了。 :)
后续推送应立即进行。如果推送没有反映在您的网站上,请尝试随后推送它。
答案 1 :(得分:2)
username.github.io
又称用户/组织网站应该被推送到master
分支。
middleman-gh-pages gem似乎只推进gh-pages
(see publish task here),这是项目页面(username.github.io/projectName
)的分支。