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