我尝试从Ruby rake任务中执行一些git命令时遇到了以下问题(我尝试过没有bash --login -c并获得相同的结果)。
tmpid='TueJan26014125UTC2010'
cmd=["git add .",
"git commit -a -m \'Migrate nanoc3 co output to gh-pages #{tmpid}\'",
"git push --force origin gh-pages:gh-pages"
]
FileUtils.chdir @gh_pages_repo_path.to_s do
puts `pwd`
cmd.each do |cmdi|
puts "bash --login -c '#{cmdi}'"
res=Kernel.send(:`, "bash --login -c '#{cmdi}'")
puts res
end
end
此输出表示工作目录,git push失败
/home/mv/Documents/Workspaces/scar/ruby/scar/gh-pages
bash --login -c 'git add .'
bash --login -c 'git commit -a -m 'Migrate nanoc3 co output to gh-pages TueJan26014125UTC2010''
# On branch master
nothing to commit (working directory clean)
bash --login -c 'git push --force origin gh-pages:gh-pages'
error: src refspec gh-pages does not match any.
error: failed to push some refs to 'git@github.com:hedgehog/scar.git'
To prevent you from losing history, non-fast-forward updates were rejected.
Merge the remote changes before pushing again.
See 'non-fast forward' section of 'git push --help' for details.
如果我立即运行相同的命令,从bash shell(konsole)开始,一切正常:
$ pushd /home/mv/Documents/Workspaces/scar/ruby/scar/gh-pages
/usr/src ~
$ git add .
$ git commit -a -m 'Migrate nanoc3 co output to gh-pages TueJan26014125UTC2010'
[gh-pages 14cbe34] Migrate nanoc3 co output to gh-pages TueJan26014125UTC2010
20 files changed, 100 insertions(+), 0 deletions(-)
$ git push --force origin gh-pages:gh-pages
Counting objects: 73, done.
Compressing objects: 100% (19/19), done.
Writing objects: 100% (38/38), 11.32 KiB, done.
Total 38 (delta 16), reused 0 (delta 0)
To git@github.com:hedgehog/scar.git
e0f0370..14cbe34 gh-pages -> gh-pages
欣赏任何见解。