間違えてpushしてしまった時の対処方法
間違えてpushしてしまった...
私自身実務の中で何回か間違えてpushしてしまったことがあります。
以前実務約5ヶ月ぐらいの時に、自分がpushしてしまったコミットによってエラーが起こったことによってシステムを止めてしまったことがあります。その時は、どうやってコミット前の状態に戻したらいいか分からず先輩エンジニアに直していただいたことがあります。
その節は、大変申し訳ありませんでした。
ここ最近は間違えてpushしてしまっても、動じずに対応することができるようになりました。
間違えてpushしてしまった時の対処方法についてこれから紹介していきたいと思います。
pushしたコミットを取り消す
pushしたコミットを削除する方法は、2つあります。
- pushしたものを無かったようにする方法
- 間違えてコミットしてしまったものをrevertコマンドで打ち消しのコミットを作成して、 pushする方法
現場によって間違えてコミットした時にどうやっているかを確認してから、対応した方がいいと思います。
pushしたものを無かったようにする方法(pushしたコミットを削除する)
ローカル履歴から変更を取り消して、履歴をpushし直す
大体直前のコミットを削除することが多いため、直前のコミットを削除を以下のコマンドで行います。
//直前のコミットを削除
git reset --hard HEAD^
- 汎用的にコミットを削除したい場合
git reset --hard (コミットのハッシュ値)
SourceTreeやGitKrakenやVSCodeのGit Graphでコミットしたものをリセットを選択してから、--hardを選択してコミット履歴を削除することもありです!
最初は、コマンドとSourceTreeの二刀流でやるといいかなと思います。
ローカルの履歴にて間違えてコミットしてしまった履歴はないが、リモートにはまだ間違えてコミットした履歴が残っています。そのままpushをしてしまうとエラーが起こりpushできないです。
pushできるようにするためには、-fのオプションをつけることにより強制的にpushを行います。
// originの後は、間違えてpushしたブランチ名を入れる。(今回は、master)
git push -f origin master(main, develop...)
※チームでやる時は、バレない程度にすることですね!個人で開発する分には、練習としてとことんやるといいと思います
git revertで取り消しコマンドを作成する
git revertコマンドを使用することで、git pushを行うときは-fオプションを使用せずにそのままできる点ではメリットであるもののコミット履歴が長くなってしまうことがデメリットです。
個人開発の時は1つ目の方法でやることが多いと思うので、間違えてコミットしてしまった時の対処法として頭に入れてもらえるといいかなと思います。
- 直前のコミットを打ち消す場合
git revert
git revert HEAD
- 複数の範囲を指定して打ち消す場合
git revert HEAD~2
git revertコマンドを実行したあとは、通常にpushすることで対応できます。
git push origin master
間違えてコミットしてしまった時の対処方法については、以上です。
上記の内容で追記すべきことなどがありましたら、コメントしていただけると幸いです。
参考記事
Discussion