アフィリエイト広告を紹介しています
Working Class Hero:泥臭く、スマートに生き抜く。

汗と汚れの染み込む現場も、キーボードを叩く現場も、どちらも知っている。 元ライン工の僕が、ITの世界で見つけた「少しだけ楽に、自分らしく働くための知恵」を置いておきます。

僕が働き方を変えた理由

【初心者向け】git reset・git revertの使い方!コミットを取り消す方法をわかりやすく解説

「間違えてコミットしてしまった!取り消したい…」

Gitを使い始めると、誰もが一度はぶつかる問題です。

コミットの取り消しには git resetgit revert の2つの方法がありますが、使い方を間違えると変更が消えてしまうこともあります。

この記事では、初心者でも安全にコミットを取り消せるように、両者の違いと使い分けを解説します。

太郎
太郎

結論から言うと、迷ったら `git revert` を使えば安全です!

git resetとgit revertの違い

まず2つの違いを理解しましょう。

項目 git reset git revert
動作 コミット履歴を書き換える 打ち消しコミットを新しく作る
履歴 コミットが消える コミットは残る
安全性 △ やり直しが難しい ◎ いつでも元に戻せる
チーム開発 × push済みには使うな ◎ push済みでもOK
使う場面 まだpushしていないコミット push済みのコミット
太郎
太郎

一番大事な違いは「pushしたかどうか」です。pushしたコミットには絶対にresetを使わないでください!

git revert の使い方(安全・推奨)

直前のコミットを取り消す

git revert HEAD

これで「直前のコミットの変更を打ち消す」新しいコミットが作られます。

エディタが開いてコミットメッセージの入力を求められますが、デフォルトのままで大丈夫です。:wq で保存して終了しましょう。

エディタを開かずに実行したい場合:

git revert HEAD --no-edit

特定のコミットを取り消す

# コミットIDを確認
git log --oneline

# 出力例:
# abc1234 ログイン機能追加
# def5678 デザイン修正
# ghi9012 初期設定

# abc1234のコミットを取り消す
git revert abc1234

revertの仕組み

revertは「コミットを削除する」のではなく、「逆の変更を加える新しいコミットを作る」という動作です。

コミット履歴:
1. 初期設定
2. ログイン機能追加  ← これをrevert
3. Revert "ログイン機能追加"  ← 打ち消しコミットが追加される

履歴が全て残るので、いつでも元に戻せるのが安全な理由です。

git reset の使い方(ローカルのみ)

注意:push済みのコミットにはresetを使わない
  • git resetは**まだpushしていないコミット**にだけ使ってください。push済みのコミットをresetすると、チームメンバーに影響が出ます。

resetの3つのモード

# --soft: コミットだけ取り消し(変更はステージングに残る)
git reset --soft HEAD~1

# --mixed: コミット+ステージング取り消し(変更はファイルに残る)← デフォルト
git reset HEAD~1

# --hard: コミット+ステージング+ファイル変更を全て取り消し
git reset --hard HEAD~1
モード コミット ステージング ファイル変更 安全性
–soft 取り消し 残る 残る
–mixed 取り消し 取り消し 残る
–hard 取り消し 取り消し 消える × 危険

よく使うパターン

コミットメッセージを修正したい時:

git reset --soft HEAD~1
git commit -m "正しいコミットメッセージ"

コミットに含めるファイルを変えたい時:

git reset HEAD~1
# 必要なファイルだけ再度add
git add correct-file.js
git commit -m "修正版"

VSCodeでコミットを取り消す方法

コマンドを使わなくても、VSCodeのGUIでも操作できます。

1
ソース管理パネルを開く

左サイドバーの「ソース管理」アイコンをクリックします。

2
コミットの取り消し

「…」メニューから「**コミット**」→「**直前のコミットを元に戻す(Undo Last Commit)**」を選択します。これは `git reset –soft HEAD~1` と同じ動作です。

太郎
太郎

VSCodeの「Undo Last Commit」は–softモードなので、変更が消える心配はありません!

こんな時どうする?Q&A

push済みのコミットを取り消したい

git revert HEAD
git push origin main

revertを使ってください。 resetは絶対NG。

複数のコミットを取り消したい

# 直近3つのコミットをrevert
git revert HEAD~3..HEAD --no-edit

resetした変更を元に戻したい

# reflogで過去の状態を確認
git reflog

# 出力例:
# abc1234 HEAD@{0}: reset: moving to HEAD~1
# def5678 HEAD@{1}: commit: ログイン機能追加

# reset前の状態に戻す
git reset --hard def5678

git reflog は「Gitの操作履歴」です。間違えてresetしても、reflogを使えば復元できます。

Git操作をもっと学びたいなら

関連記事
  • [git stashの使い方・作業を一時保存する方法](/blog/3408/)
  • [git mergeのコンフリクト解決方法](/blog/3410/)
  • [VSCodeでGitHubブランチを削除する方法](/blog/1652/)
  • [git pullでブランチが最新にならない時の対処法](/blog/2220/)
  • [VSCodeのGitHubコミット方法やpush取り消し方法](/blog/2033/)

Git・プログラミングを体系的に学ぶなら

独学で限界を感じていませんか?プロのカリキュラムなら最短でスキルが身につきます。

※無料体験・無料カウンセリングあり

まとめ:迷ったらgit revertを使おう

この記事のポイント
  • **push済み** → `git revert` を使う(安全)
  • **pushしてない** → `git reset –soft` で取り消してやり直し
  • **絶対NG** → push済みコミットに `git reset` は使わない
  • 困ったら `git reflog` で操作履歴を確認

コミットの取り消しは、覚えてしまえば怖くありません。まずは git revert だけ覚えておけばOKです!

コメント