Git
日本語 ▾ トピック ▾ 最新バージョン ▾ git-revert は2.44.0で最後に更新されました

名前

git-revert - 既存のコミットを巻き戻す

概要

git revert [--[no-]edit] [-n] [-m <parent-number>] [-s] [-S[<keyid>]] <commit>…​
git revert (--continue | --skip | --abort | --quit)

説明

既存の1つ以上のコミットが与えられた場合、関連するパッチによって導入された変更を巻き戻し、それらを記録する新しいコミットを記録します。 これには、作業ツリーがクリーンである必要があります(HEADコミットからの変更がないこと)。

注:git revert は、以前のコミット(多くの場合、 fehlerhaft なコミットのみ)の影響を逆にするために、いくつかの新しいコミットを記録するために使用されます。 作業ディレクトリのコミットされていないすべての変更を破棄したい場合は、git-reset[1]、特に --hard オプションを参照してください。 別のコミットにあった特定のファイルを抽出したい場合は、git-restore[1]、特に --source オプションを参照してください。 これらの代替手段はどちらも作業ディレクトリのコミットされていない変更を破棄するため、注意してください。

3つのコマンドの違いについては、git[1]の「リセット、復元、および巻き戻し」を参照してください。

オプション

<コミット>…​

巻き戻すコミット。 コミット名を指定する方法のより完全なリストについては、gitrevisions[7]を参照してください。 コミットのセットを指定することもできますが、デフォルトではトラバーサルは行われません。git-rev-list[1]とその --no-walk オプションを参照してください。

-e
--edit

このオプションを使用すると、_git revert_ は、巻き戻しをコミットする前にコミットメッセージを編集できます。 ターミナルからコマンドを実行する場合、これがデフォルトです。

-m 親番号
--mainline 親番号

通常、マージのどちら側をメインラインと見なすかわからないため、マージを巻き戻すことはできません。 このオプションは、メインラインの親番号(1から始まる)を指定し、指定された親に対する変更を反転するように巻き戻すことができます。

マージコミットを巻き戻すと、マージによって導入されたツリーの変更を二度と望まないことを宣言します。 その結果、後続のマージでは、以前に巻き戻されたマージの祖先ではないコミットによって導入されたツリーの変更のみが取り込まれます。 これはあなたが望むものかもしれませんし、そうでないかもしれません。

詳細については、 fehlerhaft なマージを元に戻す方法を参照してください。

--no-edit

このオプションを使用すると、_git revert_ はコミットメッセージエディターを起動しません。

--cleanup=<モード>

このオプションは、コミットメッセージがコミット機構に渡される前にどのようにクリーンアップされるかを決定します。 詳細については、git-commit[1]を参照してください。 特に、_<モード>_ に `scissors` の値が指定されている場合、競合が発生した場合にコミット機構に渡される前に `MERGE_MSG` に scissors が追加されます。

-n
--no-commit

通常、コマンドは、どのコミットが巻き戻されたかを示すコミットログメッセージを含むコミットを自動的に作成します。 このフラグは、指定されたコミットをワーキングツリーとインデックスに巻き戻すために必要な変更を適用しますが、コミットは行いません。 さらに、このオプションを使用する場合、インデックスはHEADコミットと一致する必要はありません。 巻き戻しは、インデックスの開始状態に対して行われます。

これは、複数のコミットの効果をインデックスに連続して巻き戻す場合に役立ちます。

-S[<keyid>]
--gpg-sign[=<keyid>]
--no-gpg-sign

コミットにGPG署名します。 `keyid` 引数はオプションで、デフォルトはコミッターIDです。 指定する場合は、スペースなしでオプションに付ける必要があります。 `--no-gpg-sign` は、`commit.gpgSign` 設定変数と、以前の `--gpg-sign` の両方を無効にするために役立ちます。

-s
--signoff

コミットメッセージの最後に `Signed-off-by` トレーラーを追加します。 詳細については、git-commit[1]のsignoffオプションを参照してください。

--strategy=<strategy>

指定されたマージ戦略を使用します。 1回だけ使用する必要があります。 詳細については、git-merge[1]のMERGE STRATEGIESセクションを参照してください。

-X<option>
--strategy-option=<option>

マージ戦略固有のオプションをマージ戦略に渡します。 詳細については、git-merge[1]を参照してください。

--rerere-autoupdate
--no-rerere-autoupdate

rerereメカニズムが記録された解決策を現在の競合に再利用して作業ツリー内のファイルを更新した後、解決の結果でインデックスも更新できるようにします。 `--no-rerere-autoupdate` は、`rerere` が何をしたかを二重チェックし、潜在的な誤マージをキャッチしてから、別の `git add` で結果をインデックスにコミットするための良い方法です。

--reference

ログメッセージの本文を "This reverts <巻き戻されるコミットの完全なオブジェクト名>。" で始める代わりに、 "--pretty=reference" 形式(git-log[1]を参照)を使用してコミットを参照します。 `revert.reference` 設定変数を使用して、このオプションをデフォルトで有効にすることができます。

シーケンサーサブコマンド

--continue

`。git/sequencer` の情報を使用して、進行中の操作を続行します。 失敗したcherry-pickまたはrevertで競合を解決した後に続行するために使用できます。

--skip

現在のコミットをスキップして、シーケンスの残りを続行します。

--quit

進行中の現在の操作を忘れます。 失敗したcherry-pickまたはrevertの後にシーケンサーの状態をクリアするために使用できます。

--abort

操作をキャンセルして、シーケンス前の状態に戻ります。

`git revert HEAD~3`

HEADの4番目の最後のコミットで指定された変更を巻き戻し、巻き戻された変更を含む新しいコミットを作成します。

`git revert -n master~5..master~2`

masterの5番目の最後のコミット(含まれる)からmasterの3番目の最後のコミット(含まれる)までのコミットによって行われた変更を巻き戻しますが、巻き戻された変更を含むコミットは作成しません。 巻き戻しは、作業ツリーとインデックスのみを変更します。

議論

gitは基本的なコミットメッセージを自動的に作成しますが、元のコミットが巻き戻される理由を説明することを_強く_お勧めします。 さらに、巻き戻しを繰り返し巻き戻すと、件名がますます扱いにくくなります。たとえば、_Reapply "Reapply "<元の件名>""_ などです。 これらをより短く、よりユニークなものに言い換えることを検討してください。

設定

このセクションのこの行より下のすべては、git-config[1]ドキュメントから選択的に含まれています。 コンテンツは、そこで見つかったものと同じです

revert.reference

この変数をtrueに設定すると、`git revert` は `--reference` オプションが指定されたかのように動作します。

関連項目

GIT

git[1]スイートの一部

scroll-to-top