git revert

過去のコミットを打ち消す、新しいコミットを足す。履歴は消さないので、push したあとでも使える。

実行前の状態

README.md を 1 回コミットしたあと、README.md に間違った 1 行を足して 2 回目のコミットをした場面です。このコミットはもう push してあるものとします。push したコミットを、履歴を消さずに取り消したいときに打ちます。

この状態を手元で作るなら、次の順に打ちます。push の手順は省いています。

ターミナル

git init -q -b main hello
cd hello
echo "# hello" > README.md
git add README.md
git commit -q -m "README を作る"
echo "間違いの行" >> README.md
git commit -q -a -m "README に間違いを足す"

最小の例と結果

打ち消したいコミットを指して打ちます。直前のコミットなら HEAD と書きます。--no-edit は、メッセージを書く画面を開かずに、自動で付くメッセージのまま記録する指定です。

ターミナル

git revert --no-edit HEAD
[main a1b2c3d] Revert "README に間違いを足す"
 Date: Sat Oct 17 10:00:00 2026 +0900
 1 file changed, 1 deletion(-)
  • Revert "..." は、打ち消すコミットに自動で付くメッセージです。
  • Date の行は日時です。手元では別の日時が出ます。
  • 1 deletion(-) は、間違いの行が 1 行消えたという意味です。

成功の確認

履歴の一番上に、打ち消すコミットが足されています。取り消したコミットも残っています。ファイルの中身は、間違いを足す前に戻っています。

ターミナル

git log --oneline
a1b2c3d Revert "README に間違いを足す"
9f8e7d6 README に間違いを足す
3c4d5e6 README を作る

ターミナル

cat README.md
# hello

構文と主要オプション

書き方すること
git revert <コミットの番号>指定したコミットを打ち消すコミットを足す。メッセージを書く画面が開く
git revert --no-edit <コミットの番号>メッセージを書く画面を開かずに足す
git revert HEAD直前のコミットを打ち消す
git revert -n <コミットの番号>コミットは作らず、打ち消した変更だけをステージに載せる
git revert -m 1 <マージの番号>マージコミットを打ち消す。どちらの親を残すかを 1 か 2 で選ぶ

失敗時の戻し方

revert は、履歴に足すだけで消しません。足した打ち消しのコミットをやめたいときは、まだ push していなければ git reset --hard HEAD~1 で消せます。--hard は作業中の変更まで消すので、先に git status で変更が残っていないかを確かめます。

push したあとなら、打ち消しを打ち消す revert をもう一度打ちます。

ターミナル

git revert --no-edit HEAD

衝突が出たとき

打ち消す変更が、その後の変更とぶつかると、revert は途中で止まります。衝突したファイルを直して git add し、git revert --continue で終わらせます。やめたいときは、始める前の状態へ戻します。

ターミナル

git revert --abort

よくある疑問

reset と revert は、どちらを使いますか

まだ push していないコミットなら、reset で消せます。push したコミットは revert を使います。ほかの人の手元には元のコミットが残っているので、履歴を消すと食い違います。

古いコミットだけを打ち消せますか

打ち消せます。git log --oneline で番号を探して、git revert <番号> と打ちます。その後に重ねた変更が同じ場所を触っていると衝突するので、そのときは上の手順で直します。

マージしたコミットを打ち消すときに、-m が要るのはなぜですか

マージコミットには、親が 2 つあります。どちら側の履歴を残すかを、Git は決められません。多くは 1 (マージを受けた側) を選びます。

確かめた Git の版 2.50.1 (Apple Git-155)確認日 2026年10月17日正本は Git 公式マニュアル (英語)

Git コマンド辞典の索引へ戻る