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

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

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

git revert

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

git revert <commit-hash>

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

ハッシュについて

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

最新のコミット

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

1b00736255dca7d78659a9971d0c30fba0eb3075

Note
注意

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

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

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

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

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

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

Note
注意

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

ワークフロー例

どのコミットをリバートするか決める前に、直近4つのコミットを確認:

最新の4つのコミット

recipe.txt ファイルが追加されたコミットが存在。 このコミットをrevertして、その変更を取り消し、ファイルを削除する新しいコミットを作成。 この例では、コミットハッシュは次のとおり:

043b634d76a7a7744757350512b6367417c29e0

自身のコミットハッシュは異なる。 このコミットをrevert

このハッシュを自身のハッシュに置き換え。

Gitリバート

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

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

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

最新のコミット

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

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

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