183
141

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

git pushを取り消す方法

Last updated at Posted at 2020-02-15

本記事の対象者

「git pushした後に間違いに気が付いてしまった!」
「git pushする前に戻りたい!」

そんな方に向けてこの記事を書いています。

主な対処法

  • git resetコマンド(履歴が残らずに修正できる)
  • git revertコマンド(履歴を残して修正する)

対処法1.git reset

git resetを実行すると、前のコミットの状態に戻ることができます。主にhardとsoftの2つのオプションを利用します。

$ git reset --hard HEAD^

このコマンドを実行するとcommit,add,ソースの変更を取り消すことができます。

しかし、ローカルでの変更等は残して、git pushだけ取り消したいという場合があると思います。その場合は以下のコマンドを実行してください。

$ git reset --soft HEAD^

このコマンドを実行するとコミットのみを取り消すことができます。

注意点1

git resetの後に、修正した内容をpushしようとすると、以前のコミットとコンフリクトしてエラーとなり、pushできません。

そのため、「-f」オプションをつけて強制的にpushする必要があります。

$ git push -f origin HEAD

これで何事もなかったように修正することができます。

注意点2

過去の履歴を書き換えてしまうので、チーム開発をしているとコンフリクトが起きる可能性があります。

注意点3

git resetの際に、直前のコミットのみ取り消すのであれば「HEAD^」で良いですが、直前のn個のコミットを取り消すのであれば「HEAD~n」と指定する必要があります。

対処法2.git revert

変更を取り消すのではなく、打ち消すことができます。(履歴は残る)
git resetとは異なり、過去の履歴を書き換えることがないため、安全だと言えます。

$ git revert HEAD

このコマンドを実行すると、過去のコミットを打ち消す、新しいコミットができるので、

$ git push origin HEAD

を実行すると再度pushすることができます。

注意点

git revertは安全な取り消し方法ですが、不要な履歴が増えてしまうので、個人開発などではgit resetの方が良いかもしれません。

まとめ

誤ってgit pushしてしまった時の対処法は2つあります。

  • git resetコマンド(履歴が残らずに修正できる)
  • git revertコマンド(履歴を残して修正する)

それぞれメリット・デメリットはあるので、その場に応じたコマンドを選択しましょう。

183
141
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
183
141

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?