2
2

1. リモートにプッシュしていない最新のコミットが1つあり、そのコミットを取り消したい

01_gitreset_local1.drawio.png

# 現在の変更はステージングしたまま
git reset --soft HEAD~1
# 現在の変更のステージングは外す
git reset --mixed HEAD~1
# 現在の変更は破棄する
git reset --hard HEAD~1

2. リモートにプッシュしていない最新のコミットが2つあり、そのうちの最後のコミットだけ取り消したい

最新のコミットを取り消すので、1.と同じ

02_gitreset_local1.drawio.png

# 現在の変更はステージングしたまま
git reset --soft HEAD~1
# 現在の変更のステージングは外す
git reset --mixed HEAD~1
# 現在の変更は破棄する
git reset --hard HEAD~1

3. リモートにプッシュしていない最新のコミットが2つあり、2つともコミットを取り消したい

03_gitreset_local2.drawio.png

# 現在の変更はステージングしたまま
git reset --soft HEAD~2
# 現在の変更のステージングは外す
git reset --mixed HEAD~2
# 現在の変更は破棄する
git reset --hard HEAD~2

4. リモートにプッシュ済みの最新のコミットを取り消したい

04_gitreset_remote1.drawio.png

# ローカルの最新のコミットを取り消す(現在の変更は破棄する)
git reset --hard HEAD~1
# リモートにフォースプッシュ
git push -f origin

リモートの履歴を改変するので、共同作業者がいる場合は事前にコミュケーションを取るなど、注意が必要

※コミット履歴を残す場合はgit revert
最新のコミットを受け消す、新しいコミット履歴が作成される。

04_gitreset_revert.drawio.png

git revert HEAD
git push origin

5. ローカルのコミット履歴に関わらず、リモートの最新コミットの状態に戻したい

05_gitreset_remote.drawio.png

# 指定したリモートブランチの最新コミットに戻す(現在の変更は破棄する)
git reset --hard origin/ブランチ名
2
2
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
2
2