中间人和Github页面

10
我正在尝试使用Middleman创建一个静态站点。源文件在git repo的master分支中。静态文件生成在build文件夹中,该文件夹在.gitignore中。我有一个用于Github页面的gh-pages分支。如何设置使得gh-pages分支包含master分支中build文件夹中的内容。

谢谢。

4个回答

8

6

我开始使用与Octopress 相同的技术,这对于Middleman非常有效。

基本上,我使用两个git存储库,一个在根文件夹内,另一个在构建文件夹内。根存储库将推送到GitHub远程的develop分支,但排除build目录。位于build目录中的存储库将推送到同一GitHub远程的master(或gh-pages)分支。

为了自动化推送新的静态页面,我使用以下Rakefile:

desc "deploy build directory to github pages"
task :deploy do
  puts "## Deploying branch to Github Pages "
  cp_r ".nojekyll", "build/.nojekyll"
  cd "build" do
    system "git add ."
    system "git add -u"
    puts "\n## Commiting: Site updated at #{Time.now.utc}"
    message = "Site updated at #{Time.now.utc}"
    system "git commit -m \"#{message}\""
    puts "\n## Pushing generated website"
    system "git push origin master"
    puts "\n## Github Pages deploy complete"
  end
end

2
另一个好的宝石是middleman-deploy。在安装并配置好后,您可以简单地运行。
$ middleman deploy 

你的构建目录将被推送到GitHub Pages。你可以在配置文件中指定要推送到哪个分支。我还在这里写了一篇博客文章,讲述从Jekyll转换到GitHub pages并谈论了一些部署问题(点此查看)。


0

我找不到一个简洁的方法来做这件事。这是我一直在使用的脚本:

bundle exec middleman build
mv build /tmp/

git checkout gh-pages
git rm -rf .
cp -r /tmp/build/* .
git add .
git commit -m "Update site"

rm -rf /tmp/build

git push
git checkout master

你知道有更简洁的方法吗? - denis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接