【Git】non-fast-forwardなコミットのpushが拒否される場合の対処法
Gitでnon-fast-forwardなコミットをpushする場合、以下のエラーが出てくる
To /home/user/remote.git/ ! [rejected] master -> master (non-fast-forward) error: failed to push some refs to '/home/user/remote.git/' hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Integrate the remote changes (e.g. hint: 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.
そんなときはgit push -f
で…と思っていたけどまた別のエラーが出てきた…
Counting objects: 1, done. Writing objects: 100% (1/1), 182 bytes | 0 bytes/s, done. Total 1 (delta 0), reused 0 (delta 0) remote: error: denying non-fast-forward refs/heads/master (you should pull first) To /home/user/remote.git/ ! [remote rejected] master -> master (non-fast-forward) error: failed to push some refs to '/home/user/remote.git/'
調べてみると、どうやらリモートリポジトリの設定がまずいらしい…
なのでリモートリポジトリにある.git/configファイルを修正しました
[core] repositoryformatversion = 0 filemode = true bare = true sharedrepository = 1 [receive] denyNonFastforwards = false # trueにすると、non-fast-forwardなコミットが拒否される
これでpushに成功!よかったー
ちなみにgit init --bare
に--shared
オプションをつけるとこうなるみたい
皆で使うリポジトリにそんなpushしたらいけないってことか
なるほど