読者です 読者をやめる 読者になる 読者になる

"git push -f"は使ってはならないコマンドなのか。

そんな使っちゃいけないコマンドだとしたら、pushなんて常用するコマンドにしないんじゃないのかな。git help pushとしてヘルプをみてみると、

       -f, --force
           Usually, the command refuses to update a remote ref that is not an ancestor of the local ref used to overwrite it. This flag disables the check. This
           can cause the remote repository to lose commits; use it with care.

と書かれています。ざっくり訳すと、

「通常、pushはリモートのrefを更新する時、ローカルのrefがリモートのrefの祖先ではない時、上書きされないように拒否します。(訳注:ツリーが分岐していたら、そうなりますよね?)このフラグは、このチェックを無効にするものです。これにより、リモートリポジトリにあるコミットは失う原因になりうるので、使うときには注意しましょう。」

と書かれています。他のリポジトリを使っている人に影響がありうるので、常用するのはどうかと思います。もし使うのであれば、チームのメンバーや他の人を気にしなければなりません。しかし、誰もpushする前であれば、リモートリポジトリにpushした内容を取り消したい時に「push -f」をしても影響がない事が、このヘルプの説明でわかると思います。リモートリポジトリのrefが上書かれるだけですから。

「危険だから」といわれて「???」となったんですが、どなたか危険な理由を教えていただけないでしょうか。もしヘルプに書かれている以上に気をつけなければならない事があるのであれば、教えていただけるとうれしいです。