サイトアイコン なんくる日記

【Git】一つ前のコミットに戻す方法を解説!状況別に使い分けよう

【Git】一つ前のコミットに戻す方法を解説!状況別に使い分けよう

Gitを使っていると、「直前のコミットをやり直したい」「一つ前の状態に戻したい」と思うことがよくあります。例えば、間違ったファイルを追加してしまったり、コミットメッセージを修正したくなったりすることもあるでしょう。

そんなときに便利なのが、Gitの 「コミットを戻す」 機能です。しかし、戻し方にはいくつかの方法があり、状況に応じて使い分ける必要があります。

本記事では、 git resetgit revert などを使って、一つ前のコミットに戻す方法を詳しく解説します。それぞれの使い方や違いを理解し、適切な方法を選べるようになりましょう!

git reset を使う(ローカルの変更を巻き戻す場合)

git reset は、直前のコミットを取り消し、変更をステージ(インデックス)やワークツリーに残すかどうかを選べるコマンドです。ローカルリポジトリの履歴を書き換えるため、他の人と共有する前の作業に適しています。

git reset の3つのオプション

–soft オプション(コミットだけを取り消す)

使いどころ

git reset --soft HEAD~1

実行後

そのまま修正して再コミットする場合

git commit -m "修正後のコミットメッセージ"

–mixed オプション(コミット + ステージを取り消す)

使いどころ

git reset --mixed HEAD~1

実行後

再度コミットしたい場合

git add .
git commit -m "修正後のコミットメッセージ"

–hard オプション(完全に元に戻す)

使いどころ

git reset --hard HEAD~1

実行後

--hard を実行する前に、重要な変更がないか確認しましょう!
事前に git statusgit diff で変更内容を確認すると安全です。

git reset の注意点

git reset はローカル作業の修正に便利ですが、すでにプッシュしたコミットには revert を使う方が安全です。
次のセクションでは git revert の使い方を紹介します!

git revert を使う(pushしたコミットを修正する場合)

git revert は、過去のコミットを 打ち消す新しいコミットを作成する コマンドです。履歴を保持したまま変更を取り消せるため、 すでにプッシュしたコミットを修正したい場合に最適 です。

git revert の特徴

✅ 履歴を残したまま変更を取り消せる
✅ チーム開発でも安全に使用できる
git reset のように履歴を改変しないので、リモートリポジトリとの不整合が起きない

git revert の基本的な使い方

直前のコミットを取り消すには、以下のコマンドを実行します。

git revert HEAD

実行後

そのままcommitさせる場合

エディタが開いたら、そのまま git commit で確定するか、-m オプションでメッセージを指定できます。

git revert HEAD -m "前のコミットを取り消しました"

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

1つ前のコミットではなく、過去の特定のコミットを取り消す場合は、-m オプションをつけて、どの親ブランチを残すか指定する必要があります。例えば、git log で以下のようなマージコミットがあったとします。

b3c1d5f Merge branch 'feature-x'

このマージコミットを取り消すには、以下のように実行します。

git revert -m 1 b3c1d5f

git revert の注意点

git revert については、こちらでも解説しています。ぜひ参考にしてみてください。

git checkout / git switch を使う(過去の状態に一時的に戻る)

git checkoutgit switch を使うと、 過去のコミットの状態に一時的に戻る ことができます。
これは、過去の状態を確認したいときや、一時的にブランチを分けて作業したいときに便利です。

過去の状態を確認する(git checkout)

コミット履歴を確認し、過去のコミットIDを取得します。

git log --oneline

例えば、以下のような履歴があった場合、

d1e3f45 最新のコミット
a2b7c89 修正: バグ修正
f5a3c9d 追加: 新機能
c8d9f21 初回コミット

過去のコミット a2b7c89 に戻って一時的に内容を確認したい場合、以下のコマンドを実行します。

git checkout a2b7c89

実行後

このまま変更を加えてコミットすると履歴に影響を与えるので、 新しいブランチを作成するのが安全 です。

安全に過去の状態で作業する(git switch -c)

過去の状態を元に 新しいブランチを作成して作業する こともできます。
これにより、履歴を壊さずに過去のコミットを活用できます。

git switch -c old-state a2b7c89

または、git checkout を使う場合、

git checkout -b old-state a2b7c89

実行後

まとめ

Gitで「一つ前のコミットに戻したい」と思ったとき、状況によって適切な方法を選ぶことが重要です。

間違ったコミットをしても、Gitの強力な履歴管理機能を活用すれば、安心して修正できます。
今回紹介した方法を活用し、快適なGitライフを送りましょう!

また、Gitには他にも便利なコマンドがたくさんあります。今後もさらにGitを活用したい方は、ぜひ公式ドキュメントや関連情報をチェックしてみてください!

モバイルバージョンを終了