git push origin master
! [rejected] master -> master (non-fast forward)
error: failed to push some refs to 'ssh://user@remotehost.git'
こういうときは --forceオプションをつけてやることで強制的にpushできる。! [rejected] master -> master (non-fast forward)
error: failed to push some refs to 'ssh://user@remotehost.git'
git push origin master --force
そもそもなんでこうなるかというと、push先のコミットの子孫でない場合にnon-fast forwardエラーが出る。入門Git (p81)
git pullやgit fetchなどで、push先のリポジトリとローカルのワークツリーをマージすることで整合性を合わせることが望ましいが--forceオプションをつけることで強制的にpushすることができる。(※)
※コメントいただきましたので、追記しました。
「pushできない場合の回避策」としましたが、説明が不足していたのと表現が適切でないためタイトルを変更しました。
タグ:git
たとえば、このエラーがでたら、まずは逆にfetchして他方での変更をマージしなおしてからpushする、とかね。
自分が面倒でマージもせずに--forceした経緯があったので、説明不足でした。