GitHub Desktopで変更を元に戻す方法|コミット前・Push前・Push後のやり直しガイド

2026年8月23日

広告

GitHub Desktopでの「やり直し」は、まだコミットしていないのかコミットしたがPushしていないのかすでにPushしたのかで方法が変わります。

先に現在の段階を確認してから操作を選びましょう。特に、共有ブランチの履歴を書き換えるForce pushは、ほかの人の作業へ影響するため注意が必要です。

GitやGitHubの用語を先に確認したい方は、「Gitとは?コミット・Push・リポジトリを初心者向けにやさしく解説」をご覧ください。GitHub Desktopの基本操作から順番に試したい方は、「GitHub Desktop と Visual Studio で始める段階的更新ガイド」から進めると分かりやすくなります。

コミット前、コミット後でPush前、Push後に分けたGitHub Desktopのやり直し方法の選び方
やり直す前に、コミットとPushのどこまで進んだかを確認します

1. 状況別のやり直し一覧

現在の状況選ぶ操作操作後
コミット前の変更を取り消したいDiscardファイルが最後のコミット時点へ戻る
直前のコミットを取り消したい(Push前)Undo変更がChangesタブへ戻る
複数のコミットを戻したい(Push前)Reset to commit選んだコミットより後の変更がChangesタブへ戻る
直前のコミットを修正したい(Push前)Amend直前のコミットを新しい内容で置き換える
Push済みのコミットを打ち消したいRevert変更を打ち消す新しいコミットが作られる
Push済みの履歴自体を巻き戻したいReset+Force pushリモート履歴を書き換えるため高リスク

初心者の基本方針:Push前はUndo・Reset・Amend、Push後はRevertを選びます。

2. コミット前:変更を破棄する(Discard)

対象:Changesタブに表示されている、まだコミットしていない変更

Discardを実行すると、選んだファイルの変更が取り除かれ、最後のコミット時点へ戻ります。実行前に、破棄するファイルが正しいか必ず確認してください。

すべての変更を破棄する

  1. Changesタブを開く
  2. 変更ファイル一覧の見出し部分を右クリックする
  3. 「Discard All Changes」を選ぶ
  4. 確認画面で対象を確認し、「Discard Changes」を選ぶ

一部のファイルだけ破棄する

  1. Changesタブで破棄したいファイルを選ぶ
  2. ファイルを右クリックする
  3. 「Discard Changes」を選ぶ
  4. 確認画面でファイル名を確認して実行する

Discardした変更を復元する

GitHub Desktopで破棄した変更は、日付付きのファイルとしてOSのゴミ箱へ保存されます。ゴミ箱を空にする前であれば、対象ファイルを元の場所へ戻して復元できます。

注意:ゴミ箱を空にすると復元できません。残すか迷う変更は、DiscardではなくStashや一時ブランチへ退避しましょう。

3. コミット後・Push前:Undo・Reset・Amend

3-1. 直前のコミットを取り消す(Undo)

  1. Changesタブを開く
  2. 画面左下に表示される直前のコミットを確認する
  3. 「Undo」を選ぶ
  4. コミットの変更がChangesタブへ戻ったことを確認する

Undoはコミットだけを取り消し、変更した内容は残します。修正してから、改めてコミットできます。すでにPushしたコミットには使用できません。

3-2. 指定したコミットまで戻す(Reset to commit)

  1. Historyタブを開く
  2. 戻したいコミットを右クリックする
  3. 「Reset to commit」を選ぶ
  4. 選んだコミットより後の変更がChangesタブへ戻ったことを確認する

GitHub DesktopのReset to commitは、Push済みの最新コミットより前へは戻せません。Push済みの変更を安全に打ち消す場合はRevertを使います。

3-3. 直前のコミットを修正する(Amend)

  1. Historyタブで最新コミットを右クリックする
  2. 「Amend commit」を選ぶ
  3. コミットメッセージを直し、必要なら追加の変更を選ぶ
  4. 「Amend last commit」を選ぶ

Amendは直前のコミットを新しいコミットで置き換えます。Push済みのコミットをAmendするとForce pushが必要になるため、初心者はPush前だけに使うのが安全です。

4. マージをやり直す

4-1. マージコミットをPushする前

マージコミットが直前のコミットで、まだPushしていない場合は、Changesタブ左下の「Undo」で戻せます。変更内容は残るため、ブランチや競合の状態を確認してからやり直せます。

4-2. マージコミットをPushした後

GitHub上でマージしたプルリクエストを元に戻す場合は、対象のプルリクエストを開き、「Revert」が表示されていれば選びます。変更を打ち消すための新しいプルリクエストが作られるので、内容を確認してマージします。

「Revert」が表示されない場合や、コマンドで操作する場合は次の方法があります。

git revert -m 1 <マージコミットのハッシュ>

-m 1は、通常はmain側を基準としてマージコミットの変更を打ち消す指定です。実行後は内容を確認してからPushしてください。

5. Push後:基本はRevert

5-1. Revertで変更を打ち消す

Revertは、指定したコミットの変更を打ち消す新しいコミットを作ります。元のコミットも履歴に残るため、共有ブランチでPush済みの変更を戻す基本的な方法です。

  1. Historyタブを開く
  2. 打ち消したいコミットを右クリックする
  3. 「Revert Changes in Commit」を選ぶ
  4. 作成された打ち消しコミットを確認する
  5. 「Push origin」でGitHubへ送る
git revert <コミットのハッシュ>
Revert、Undo、Reset、Discard、ResetとForce pushを安全度別に比較した図
迷ったら、Push済みの変更にはRevertを選びます

5-2. Reset+Force pushは上級者向け

Push済みの履歴自体を書き換える方法です。共有ブランチでは、ほかの人が取得した履歴と食い違うため使用しないでください。

どうしても個人ブランチで行う場合も、先にバックアップ用ブランチを作り、通常の--forceより安全確認が働く--force-with-leaseを使います。

git branch backup-before-rewrite
git reset --hard <戻したいコミットのハッシュ>
git push --force-with-lease

6. 変更を守るための便利な操作

Stash(一時退避)

まだコミットしたくない変更を一時的に避難できます。Changesタブの変更ファイル見出しを右クリックし、「Stash All Changes」を選びます。GitHub Desktopで保持できるStashは1組だけです。

Cherry-pick(特定コミットを別ブランチへコピー)

間違ったブランチへコミットした場合などに、必要なコミットだけを別のブランチへコピーできます。Historyで対象コミットを右クリックし、「Cherry pick commit」を選び、コピー先のブランチを指定します。

Reflog(ローカルで見失ったコミットを探す)

Resetなどで履歴上から見えなくなったコミットを、ローカルの操作記録から探す上級者向けの方法です。

git reflog
git switch -c rescue <コミットのハッシュ>

7. CLI早見表

# 直前のコミットを取り消し、変更を残す
git reset --soft HEAD~1

# 指定したコミットまで戻し、変更を作業フォルダーに残す
git reset --mixed <コミットのハッシュ>

# Push済みのコミットを安全に打ち消す
git revert <コミットのハッシュ>

# 直前のコミットを修正する
git commit --amend

# 変更を一時退避して戻す
git stash push -u
git stash list
git stash pop

8. 操作前のチェックリスト

  • 対象のリポジトリとブランチは正しいか
  • 変更はコミット済みか
  • そのコミットはPush済みか
  • 共有ブランチではないか
  • Discardするファイルを確認したか
  • 高リスクな操作の前にバックアップ用ブランチを作ったか

まとめ

  • コミット前の不要な変更はDiscard
  • Push前の直前コミットはUndo
  • Push前の複数コミットはReset to commit
  • Push前の直前コミット修正はAmend
  • Push済みの変更はRevert
  • Reset+Force pushは共有ブランチで使わない

迷ったときは、まず作業を止めて「コミット済みか」「Push済みか」を確認してください。状況が分かれば、必要な操作を安全に選べます。

参考:GitHub公式ドキュメント

訪問数 107 回, 今日の訪問数 12回

広告