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

 

 

コメント