Gitのpush -fがreject (拒否)されたので原因と対策 denyNonFastForwardsをfalseにした

Git

Gitでfilter-branchを使って歴史の書換えを行った後で、

push -f

してみるとエラーでrejectされてしまいました。

-fオプションはForce(強制)

のはずなのでなんでなんだろう?

スポンサーリンク
スポンサーリンク

git push -f でnon-fast-forwardエラー

git pushすると以下のエラーが出ました。

やむを得ず、git push -f を試みます。

(今考えてみれば、何も考えずに、-f するのは危険というか、浅はか。)

やはりエラーです。

うーん。

denyNonFastForwardsをtrueからfalseへ変更

リポジトリの

/aaa/bbb/repo.git/config

を調べてみると以下のようになっていました。

denyNonFastForwards = true

にすると、

non-fast-forwards

なコミットは拒否されます。

git init --bare --shared

でリポジトリを作成するとこのような設定になるようです。

今回は、リポジトリのconfigの中身を

denyNonFastForwards = false

に修正しました。

ちなみに、コマンドからは以下のようにします。

まとめ

まとめると以下の通りです。

denyNonFastForwards = true

filter-branchで歴史の書換えが出来なくなる。

denyNonFastForwards = false

filter-branchで歴史の書き換えを行える。

運用方法としては都合の良いほうを使えばよいと思います。

Gitについてのおすすめの本

↓Gitについてのおすすめの本はコチラ

Git