我已经使用Octopress在github页面上设置了一个博客。我创建了我的第一篇文章,并且能够使用rake preview
在localhost上查看它。但是它无法部署到github页面。对git不熟悉,我很难理解这个问题。
我运行rake deploy
以跟随documentation部署到github页面。
我收到此消息:
## Deploying branch to Github Pages
## Pulling any updates from Github Pages
cd _deploy
You asked me to pull without telling me which branch you
want to merge with, and 'branch.master.merge' in
your configuration file does not tell me, either. Please
specify which branch you want to use on the command line and
try again (e.g. 'git pull <repository> <refspec>').
See git-pull(1) for details.
If you often merge with the same branch, you may want to
use something like the following in your configuration file:
[branch "master"]
remote = <nickname>
merge = <remote-ref>
[remote "<nickname>"]
url = <url>
fetch = <refspec>
See git-config(1) for details.
cd -
rm -rf _deploy/blog
rm -rf _deploy/robots.txt
rm -rf _deploy/javascripts
rm -rf _deploy/stylesheets
rm -rf _deploy/sitemap.xml
rm -rf _deploy/favicon.png
rm -rf _deploy/atom.xml
rm -rf _deploy/index.html
rm -rf _deploy/images
rm -rf _deploy/assets
## Copying public to _deploy
cp -r public/. _deploy
cd _deploy
## Committing: Site updated at 2014-01-25 20:13:51 UTC
# On branch master
nothing to commit (working directory clean)
## Pushing generated _deploy website
To git@github.com:slmnm/slmnm.github.io.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:slmnm/slmnm.github.io.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again. See the
'Note about fast-forwards' section of 'git push --help' for details.
## Github Pages deploy complete
cd -
关注this question后,我将branch.master.remote
设置为origin
。
为解决非快进情况,我执行了git push origin master
。在此之后,我能够将代码推送到github,但不能使用rake deploy
部署到github页面。
我要在这里粘贴我的git配置文件,我不知道这是否会有所帮助。
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "octopress"]
url = git://github.com/imathis/octopress.git
fetch = +refs/heads/*:refs/remotes/octopress/*
[branch "source"]
remote = origin
merge = refs/heads/master
[remote "origin"]
url = git@github.com:slmnm/slmnm.github.io.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
正如您可能已经猜到的那样,我一个人在做这个,而且没有合作者(呃!博客)。这是我repo。如果您需要任何其他细节,请告诉我。我是一个git newb :)谢谢
编辑:我还收到了来自github的电子邮件,内容如下:
页面构建失败,出现以下错误:
source/blog/archives/index.html
中包含一个文件 符号链接或在_includes
目录中不存在。
虽然我尝试过多次部署,但这发生过一次。
答案 0 :(得分:27)
确定。我已经解决了这个问题。所以我自己会回答这个问题。
我遇到的问题是因为我试图从octopress目录修复问题,我应该从_deploy目录这样做。
运行rake deploy
后,octopress执行cd _deploy
并尝试将更新推送到Github(在我的情况下)。在此期间,我收到了消息“You asked me to pull without telling me which branch you ...
”
在此之后,在_deploy目录中,我运行了
git config branch.master.remote origin
git config branch.master.merge refs/heads/master
git pull
这解决了两个错误(上面描述的错误和非快速前向错误)。现在将其推送到远程,(或再次运行rake deploy
)。
这对我有用。如果您有更好的解决方案,我愿意改变正确的答案。
答案 1 :(得分:9)
如果我们有多个分支且git
无法识别要部署的分支,则会出现此问题。
在Rakefile中,您可以查看deploy_branch
deploy_branch = "master" # For me its master
然后,在第250行的某处,有一个名为:push的任务在rake deploy
期间被调用
在此:push
任务中
在cd "#{deploy_dir}" do
之后,完成了git pull
Bundler.with_clean_env { system "git pull" }
在这个命令中,git无法识别要部署的分支,所以我们只需将上面的行更改为
Bundler.with_clean_env { system "git pull origin #{deploy_branch}" }