くま's Tech系Blog

基本的には技術で学んだことを書き留めようと思います。雑談もやるかもね!

git pushを取り消そう

久しぶりの投稿になります!

技術書典の執筆やら、LTの資料作成やらでなかなか更新できずにいました。(技術書典中止らしい・・・・)

今回はそんな中、焦ってやってしまったpushを取り消す方法です。

①Revert

変更を打ち消すコミットを作成するという一番安心なやり方です。

# 直前のコミットの内容を打ち消すためのコミットを行う。コミットIDでも可
$ git revert HEAD
or
 $ git revert [ コミットID ]

# 打ち消したコミットをプッシュする
$ git push origin master

ただ、コミット履歴が残ってしまうので、そこが難点かと。

あと、こっそり消してしまいたいときってありますよね笑

そんな時は次のやり方がオススメです!

②git reset

resetを使うとコミット履歴を残さず、元に戻すことができます。

これを使うときは他の人がみていない場所でしれっと行いましょう笑

# 直前のコミットを取り消す。コミットIDでも可
$ git reset --soft HEAD^
or
$ git reset --hard [ コミットID ]

# 強制的プッシュ
$ git push -f origin master

強制プッシュしないと自分が修正しているリポジトリの歴史を書き換えようとするためエラーが発生するので注意が必要です。

今回はresetを使ってことなきをえました。

ここで補足です

$ git reset –soft→commitのみ取り消す

$ git reset –hard→commit・add・ソースの変更を取り消す

$ reset –mixed→commitとaddのみを取り消す

また、HEADだと直前のコミットになりますが、HEAD^2などで2つ前のコミットというように数字指定もできます。

皆さんも快適なGitライフを!

参照

git pushを取り消す2つの方法