サイトアイコン プログラマー(PG)・システムエンジニア(SE)になるための入門講座

ResetとRevertの違いとは?初心者向けに役割・使い方・実務での使い分けをわかりやすく解説

ResetとRevertの違いとは?初心者向けに役割・使い方・実務での使い分けをわかりやすく解説

結論として、Reset(リセット)はコミット履歴を戻して履歴そのものを書き換える操作、Revert(リバート)は履歴を残したまま変更を取り消すための新しいコミットを作成する操作です。

どちらも「変更を元に戻す」ための機能ですが、履歴の扱い方が大きく異なります。

IT現場では、共有済みのリポジトリではRevertを利用し、まだ共有していないローカル作業ではResetを利用することが一般的です。

この記事では、IT業務に従事する初心者向けに、ResetとRevertの違い、実際の利用シーン、基本操作、よくあるトラブルまでわかりやすく解説します。

Resetとは

Reset(リセット)とは、指定したコミットまで履歴を戻すGitコマンドです。

Resetを実行すると、コミット履歴を書き換えるため、扱いには十分な注意が必要です。

Resetでできること

Revertとは

Revert(リバート)とは、取り消したいコミットとは逆の変更を行う新しいコミットを作成するGitコマンドです。

元のコミット履歴は残るため、誰が・いつ・何を取り消したかを後から確認できます。

Revertでできること

ResetとRevertの違い

項目 Reset Revert
履歴の書き換え する しない
新しいコミット 作成しない 作成する
共有済みブランチ 非推奨 推奨
ローカル作業 向いている 利用できる
初心者向け

イメージすると理解しやすい

Reset

Resetはノートの最後のページを破ってなかったことにするイメージです。

履歴自体がなくなるため、他の人と共有している場合は混乱の原因になります。

Revert

Revertは「前の内容は間違いでした」と訂正を書くイメージです。

履歴は残るため、後から経緯を確認できます。

Gitの基本的な流れ

Resetを利用する場合

  1. コミットする
  2. 誤りに気付く
  3. Resetする
  4. 修正して再度コミットする

Revertを利用する場合

  1. Push済みコミットを確認する
  2. Revertする
  3. 取り消し用コミットを作成する
  4. Pushして共有する

Resetの種類

種類 特徴
–soft コミットだけ取り消し、変更内容は保持する
–mixed コミットとステージングを取り消す(既定)
–hard コミット・ステージング・作業内容をすべて削除する

特に--hardは変更内容が失われる可能性があるため、十分注意して使用しましょう。

実際のIT現場での利用例

例1:システム開発

ローカルで誤ったコミットをした場合はResetでやり直します。

すでにPushしたコミットを取り消す場合はRevertを利用することが一般的です。

例2:社内SE

PowerShellスクリプトの誤修正を本番環境へ反映してしまった場合は、Revertで変更を取り消し、履歴を残します。

例3:インフラ運用

サーバー設定ファイルを誤って変更した場合も、障害調査のためにRevertを利用する企業が多くあります。

GUIでの操作方法

  1. 対象コミットを選択する
  2. ResetまたはRevertを選択する
  3. 確認画面で内容を確認する
  4. 操作を実行する

Visual Studio CodeやSourceTreeなどのGUIツールでも実行できます。

CUI(コマンド)での操作方法

コマンド 内容
git reset –soft HEAD~1 直前のコミットだけ取り消す
git reset –mixed HEAD~1 コミットとステージングを取り消す
git reset –hard HEAD~1 すべて元に戻す
git revert コミットID 取り消し用コミットを作成する
git log 履歴を確認する

確認方法

履歴を確認する

Resetでは履歴が短くなり、Revertでは「Revert〜」という新しいコミットが追加されます。

現在の状態を確認する

変更内容やステージングの状態を確認できます。

確認結果の見方

状態 意味
履歴が減っている Resetされた可能性が高い
Revertコミットが追加されている 変更が安全に取り消された
Working tree clean 変更はない

業務でよくあるトラブル

Resetしたら変更が消えた

原因

対応方法

すぐに作業を中断し、必要に応じてgit reflogで履歴を確認します。ただし、必ず復旧できるとは限りません。

Push済みコミットをResetした

原因

共有済みブランチで履歴を書き換えたことが原因です。

チームメンバーへ影響するため、すぐに上司やリーダーへ報告しましょう。

原因の切り分け

確認対象 確認内容
コミット Push済みかローカルのみか
ブランチ 共有ブランチか個人ブランチか
履歴 ResetかRevertか
影響範囲 他のメンバーへ影響するか

影響範囲

Resetは履歴を書き換えるため、共有済みブランチで実行すると他のメンバーの作業へ影響を与える可能性があります。

Revertは履歴を保持したまま変更を取り消すため、共同開発でも安全に利用できます。

初心者がやりがちなミス

ショートカットキー

キー 内容
Ctrl + Shift + G Visual Studio Codeのソース管理を開く
Ctrl + Shift + P コマンドパレットを開く
Ctrl + ` 統合ターミナルを開く

上司へ報告するポイント

エスカレーションするタイミング

新人が覚えておくべきポイント

ResetとRevertはどちらを使うべき?

利用シーン おすすめ
ローカルの誤コミットを修正したい Reset
Push済みコミットを取り消したい Revert
共同開発 Revert
履歴を残したい Revert
まだ誰にも共有していない作業 Reset

関連するIT用語

よくある質問(FAQ)

Resetするとコミットは完全に消えますか?

履歴上は見えなくなりますが、すぐであればgit reflogを利用して復旧できる場合があります。ただし、復旧できる保証はないため、安易にResetを実行しないようにしましょう。

Pushしたコミットを取り消すにはResetとRevertのどちらを使うべきですか?

基本的にはRevertを使用します。履歴を書き換えないため、他のメンバーへの影響を最小限に抑えられます。

ResetとRestoreは同じですか?

いいえ。Resetはコミットやステージングの状態を変更するコマンドで、Restoreはファイルを以前の状態へ戻すことを目的としたコマンドです。

初心者はResetを使わない方がよいですか?

ローカルでの作業整理には便利ですが、共有済みブランチでは慎重に扱う必要があります。迷った場合は、履歴を残せるRevertを選ぶ方が安全です。

まとめ

ResetとRevertはどちらも変更を取り消すための機能ですが、履歴の扱い方が大きく異なります。

まずは「Reset=履歴を書き換える」「Revert=履歴を残して取り消す」という違いを理解し、状況に応じて使い分けることで、安全にGitを運用できるようになります。

モバイルバージョンを終了