Posted at

rake releaseでコミットを先にしろと怒られた時の対応

More than 5 years have passed since last update.


現象

gemの修正が終わり,Githubに一度pushした状態。

rake releaseでタグ打ちとRubygemsへのアップロードをしようとすると、次のエラーが出た。

修正は終わって、pushしているのでもうコミットすべきファイルはないはず…

$ rake release

ansible_spec 0.0.1.2 built to pkg/ansible_spec-0.0.1.2.gem.
rake aborted!
There are files that need to be committed first.
/Users/Adr/.rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.3.5/lib/bundler/gem_helper.rb:115:in `guard_clean'
/Users/Adr/.rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.3.5/lib/bundler/gem_helper.rb:75:in `release_gem'
/Users/Adr/.rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.3.5/lib/bundler/gem_helper.rb:50:in `block in install'
/Users/Adr/.rvm/gems/ruby-1.9.3-p194/bin/ruby_noexec_wrapper:14:in `eval'
/Users/Adr/.rvm/gems/ruby-1.9.3-p194/bin/ruby_noexec_wrapper:14:in `<main>'
Tasks: TOP => release
(See full trace by running task with --trace)
MBA:ansible_spec Adr$


原因

ステージングにかかわらず、未コミットのファイルがあると起こる。

実は別件でadd前の編集中のファイルがあった。

確かにcommitしていないが、でもaddしていないのでステージングもされていないのでは。。

addとは無関係にcommitされていないファイルがあると無条件にダメなのか?

MBA:ansible_spec Adr$ git st

# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: lib/ansible_spec.rb
#
no changes added to commit (use "git add" and/or "git commit -a")


解決策

未コミットのファイルを一旦checkoutで元に戻すと、rake releaseを実行できる。

この対応で良いのか分からず、理解できてないところもあるけど、取り敢えず今後は気をつける。

どなたか別の解決策・注意点をご存知でしたら教えて下さい。。。