Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ 特定のコミットの取り消し | 変更の取り消し
Gitの基礎

特定のコミットの取り消し

メニューを表示するにはスワイプしてください

git revert

特定のコミットを元に戻すには、git revert コマンドを使用。 このコマンドは、指定したコミットによって導入された変更を打ち消す新しいコミットを作成。 基本構文:

git revert <commit-hash>

HEAD(最新のコミットを対象)を使う代わりに、元に戻したいコミットのハッシュコミットID)を指定し、<commit-hash> を実際のハッシュ値に置き換え。

ハッシュについて

各コミットには一意のIDが付与されており、これは数字(0–9)と英字(a–f)からなる40文字の16進数文字列。 この識別子はハッシュと呼ばれる。 最新のコミットを表示:

git log -n 1
最新のコミット

こちらがそのハッシュです:

1b00736255dca7d78659a9971d0c30fba0eb3075

Note
注意

このコミットのハッシュは、下記で説明する理由により異なります。

コミットハッシュは、以下の情報に基づいて SHA-1アルゴリズムを使用して計算されます:

  • コミットメッセージ
  • 日付
  • 作成者
  • 作業ツリーのスナップショット
  • 親コミットのハッシュ(親が複数ある場合はそれぞれのハッシュ)

リポジトリ内で最初のコミットの場合、親コミットのハッシュは計算されません。

ハッシュの計算

これらすべてのコミット情報はハッシュの計算に使用されるため、ハッシュをコミットIDとして利用することでリポジトリの一貫性が保たれる。また、異なる2つのコミットが同じハッシュになる確率(衝突の確率)は極めて低く、偶然発生する可能性はほとんどない。

基本的に、コミット内の何かが変更されると、そのハッシュも変化する。つまり、何らかの理由でデータが破損した場合でも、Gitはハッシュを使ってこれを特定できる。

Note
注意

コミットを修正(amend)すると、コミットIDが変更されるため、リモートリポジトリで作業している場合は git commit --amend コマンドの使用は推奨されない。

例: ワークフロー

どのコミットを取り消すか決定する前に、直近4件のコミットを表示:

git log -n 4
最新4件のコミット

recipe.txt ファイルが追加されたコミットが存在。 このコミットをrevertして、新しいコミットを作成し、これらの変更を元に戻してファイルを削除。 この例では、コミットハッシュは次の通り:

043b634d76a7a7744757350512b6367417c29e0

自身のコミットハッシュは異なる場合あり。 このコミットをrevert:

git revert 043b634d76a7aa7744757350512bb3b7417c29e0

このハッシュを自分のハッシュに置き換えてください。

Gitリバート

再度、デフォルトのテキストエディタが開き、リバート用のデフォルトコミットメッセージが表示されます。 メッセージは変更せず、そのままにしてください。

デフォルトのリバートコミットメッセージ

次に、テキストエディタを正しく閉じ、最新のコミットで行われた変更を表示:

git show HEAD
最新のコミット

7 行の削除が発生し、ファイル内の 7 行すべてが削除されました。 次に、プロジェクトディレクトリ内の非表示ファイルおよびディレクトリをすべて一覧表示して、ファイル自体が削除されたことを確認します:

ls -l
ファイルとディレクトリの一覧表示

recipe.txt ファイルが正常に削除されました。

question-icon

操作内容と対応するコマンドを組み合わせてください。


Revert the latest commit:

Revert a specific commit:

Unstage changes:

Revert unstaged changes:

Unstage changes and then revert the changes in the working directory:

Overwrite the existing commit:

クリックまたはドラッグ`n`ドロップして空欄を埋めてください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 3.  5

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 3.  5
some-alt