特定のコミットの取り消し
メニューを表示するにはスワイプしてください
git revert
特定のコミットを元に戻すには、git revert コマンドを使用。
このコマンドは、指定したコミットによる変更を打ち消す新しいコミットを作成。
基本構文:
git revert <commit-hash>
HEAD(最新のコミット)を使う代わりに、元に戻したいコミットのハッシュ(コミットID)を指定し、<commit-hash> を実際のハッシュ値に置き換え。
ハッシュについて
各コミットには一意のIDが付与されており、これは40文字の16進数文字列(数字0–9と英字a–f)で構成。 この識別子はハッシュと呼称。 最新のコミットを表示:
こちらがそのハッシュです:
1b00736255dca7d78659a9971d0c30fba0eb3075
このコミットのハッシュは、下記で説明する理由により異なります。
コミットハッシュは、以下の情報に基づき SHA-1アルゴリズムで計算されます:
- コミットメッセージ
- 日付
- 作成者
- 作業ツリーのスナップショット
- 親コミットのハッシュ(親が複数の場合はそれぞれのハッシュ)
リポジトリ内で最初のコミットの場合、親コミットのハッシュは計算されません。
これらすべてのコミット情報がハッシュの計算に使用されるため、ハッシュをコミットIDとして使用することでリポジトリの一貫性が保たれる。また、異なる2つのコミットが同じハッシュになる(衝突の確率)は極めて低く、偶然に発生する可能性はほとんどない。
基本的に、コミット内の何かが変更されると、そのハッシュも変更される。つまり、何らかの理由でデータが破損した場合でも、Gitはハッシュを使ってこれを特定できる。
コミットを修正(amend)するとコミットIDが変更されるため、リモートリポジトリで作業している場合は git commit --amend コマンドの使用は推奨されない。
ワークフロー例
どのコミットをリバートするか決める前に、直近4つのコミットを確認:
recipe.txt ファイルが追加されたコミットが存在。
このコミットをrevertして、その変更を取り消し、ファイルを削除する新しいコミットを作成。
この例では、コミットハッシュは次のとおり:
043b634d76a7a7744757350512b6367417c29e0
自身のコミットハッシュは異なる。 このコミットをrevert:
このハッシュを自身のハッシュに置き換え。
再び、デフォルトのテキストエディタが開き、リバート用のデフォルトコミットメッセージが表示される。 メッセージは変更せず、そのままにする。
次に、テキストエディタを正しく閉じ、最新のコミットで行われた変更を表示:
7件の削除が発生し、ファイルの7行すべてが削除されたことを意味します。 次に、プロジェクトディレクトリ内の非表示ファイルおよびディレクトリをすべて一覧表示して、ファイル自体が削除されたことを確認:
recipe.txt ファイルが正常に削除されました。
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください