👌

git push -f をしたら具体的に困ること

2023/04/20に公開

どういうときに-fを使うの?

強制pushのコマンドは個人開発で手っ取り早くpushしたい時に使います。チーム開発ではやめておきましょう。

具体的にどんな時に困るの?

例えばこんなエラーが表示されたとします。

 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://github.com/yyy/xxx'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

このエラーは以前に他のローカルリポジトリからリモートリポジトリへpushしていた場合に起こります。
例えばTestというリポジトリをcloneしてTest2という名前で編集し、Testリポジトリにpushしたとします。そうすると以前までTestリポジトリを編集していたローカルリポジトリとgitの整合性が取れなくなることがあります
だから変更が加わった場合はpullをして変更を取り入れる必要があるのです。

git push -fした後に環境変数をpushしていることに気が付いた!

こうなったらpushを削除しなければなりません。
ですがローカルリポジトリを変更した場合、そのローカルリポジトリが最後にpull, pushしたものしか戻れないのです。

まとめ

・個人環境でもブランチを分ける。
・こまめにpushして被害を抑える。

Discussion