はじめに
Gitでバージョン管理をしていると、コミットの取り消しが必要になる場面に遭遇する事は少なくありません。 「間違えてコミットしてしまった」「やっぱりこの変更はなかったことにしたい」など、理由は様々でしょう。
しかし、Gitにおけるコミットの取り消しは、初心者の方にとってはやや複雑で、誤った操作をしてしまうとデータが消失するリスクも孕んでいます。
そこで今回は、Gitのコミットを取り消す方法について、状況に合わせた様々な方法を分かりやすく解説いたします。 過去のコミットに適切に対処し、Gitをもっと使いこなせるようになりましょう!
コミットを取り消すとは?
コミットを取り消すとは、具体的にどのような操作を指すのでしょうか?誤解を防ぐためにも、まずは「コミットの取り消し」について正しく理解しておきましょう。
Gitにおけるコミットとは、ファイルの変更履歴を記録する操作のことです。コミットを行うことで、特定の時点でのファイルの状態を保存しておくことができます。
そして、「コミットを取り消す」とは、過去のコミットによって加えられた変更をなかったことにすることを意味します。
ただし、Gitでは完全に過去のコミットを削除するわけではありません。過去のコミット履歴は残しつつ、特定のコミットによる変更を取り消した新しい状態を作り出すイメージです。
コミットを取り消す方法:状況別に解説
コミットを取り消す方法は、大きく分けて以下の3つの状況と、それぞれに適した方法があります。
- 直前のコミットを取り消したい場合
- 複数のコミットを取り消したい場合
- リモートリポジトリにプッシュ済みのコミットを取り消したい場合
それぞれの状況に適した方法を順番に見ていきましょう。
1. 直前のコミットを取り消したい場合: git reset
コマンド
直前のコミットを取り消したい場合は、git reset
コマンドを使用します。 git reset
コマンドは、現在の作業ブランチを指定したコミットまで巻き戻すコマンドです。
手順
-
まず、以下のコマンドでGitのログを確認し、巻き戻したいコミットのハッシュ値を確認します。
git log
-
巻き戻したいコミットのハッシュ値を確認したら、以下のコマンドを実行します。
git reset [巻き戻したいコミットのハッシュ値]
例えば、直前のコミットを取り消したい場合は、「HEAD^」を指定します。
git reset HEAD^
注意点
git reset
コマンドは、指定したコミット以降のコミット履歴を削除してしまうため、取り扱いに注意が必要です。誤ってコミットを削除しないよう、事前に git log
コマンドでコミット履歴を確認することをおすすめします。
2. 複数のコミットを取り消したい場合: git reset
コマンド (複数指定)
複数のコミットを取り消したい場合は、git reset
コマンドで巻き戻したいコミットを複数指定する方法があります。
手順
基本的には、直前のコミットを取り消す場合と同様です。git reset
コマンドで巻き戻したいコミットのハッシュ値を指定する際に、複数のハッシュ値を指定します。
git reset [巻き戻したいコミットのハッシュ値1] [巻き戻したいコミットのハッシュ値2] ...
3. リモートリポジトリにプッシュ済みのコミットを取り消したい場合: git revert
コマンド
リモートリポジトリにプッシュ済みのコミットを取り消したい場合は、 git revert
コマンドを使用します。
git revert
コマンドを実行すると、指定したコミットによる変更を取り消す新しいコミットが作成されます。この際、過去のコミット履歴は削除されずに残ります。
手順
-
以下のコマンドでGitのログを確認し、取り消したいコミットのハッシュ値を確認します。
git log
-
取り消したいコミットのハッシュ値を確認したら、以下のコマンドを実行します。
git revert [取り消したいコミットのハッシュ値]
-
コミットメッセージを入力するエディタが開くので、必要があれば編集して保存します。
-
変更をリモートリポジトリに反映するため、以下のコマンドを実行します。
git push origin [ブランチ名]
git revert
コマンドを使用するメリット
- 過去のコミット履歴が残るため、後から変更履歴を確認できる
- チームで開発している場合でも、他の開発者の作業に影響を与えにくい
まとめ
今回は、Gitのコミットを取り消す方法について解説しました。
コミットを取り消す方法は、状況に合わせて適切な方法を選択することが重要です。
- 直前のコミットを取り消したい場合は
git reset
コマンド - 複数のコミットを取り消したい場合は
git reset
コマンドで複数指定 - リモートリポジトリにプッシュ済みのコミットを取り消したい場合は
git revert
コマンド
今回の内容を参考に、状況に応じて適切な方法を選択し、安全にGitのコミット操作を行ってください。
関連記事
-
【初心者必見】Gitコマンド習得への道:基礎から実践まで徹底解説!【Git超入門】初心者も迷わない!基本コマンド徹底解説で、今日からあなたもバージョン管理マスター! Gitは、現代のソフトウェア開発において必
-
SubversionとGitの違いを徹底解説!初心者でもわかる選び方SubversionとGitの違いを徹底解説!初心者でもわかる選び方 システム開発において、ソースコードのバージョン管理は必要不可欠です。複数
-
【もう失敗しない】バージョン管理超入門 - チーム開発をスムーズにする最強の味方とは?【もう失敗しない】バージョン管理超入門 - チーム開発をスムーズにする最強の味方とは? 皆さんは、複数人で資料を作成する際に、誰がどの部分を編集し