付録D GitHub Desktop やり直しガイド(統合版)

広告

GitHub Desktop での「やり直し」は、コミット前か後かPush 前か後かで方法が変わります。本稿では、状況別にわかりやすく整理します。


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

状況方法難易度
変更を破棄したい(コミット前)Discard
直前のコミットを取り消したい(Push前)Undo
数コミット前からやり直したい(Push前)Reset to commit★★
直前のコミットを修正したい(Push前)Amend
マージを取り消したい(Push前)Undo
マージを取り消したい(Push後)Revert★★
コミットを打ち消したい(Push後)Revert★★
完全に巻き戻したい(個人ブランチのみ)Reset + Force push★★★

2. コミット前:変更の破棄(Discard)

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

全ファイルを破棄

  1. Changes タブを選択
  2. 変更一覧の上で右クリック
  3. 「Discard all changes」を選択
  4. 確認ダイアログで「Discard all changes」をクリック

→ 最後のコミット時点の状態に戻ります。

一部のファイルだけ破棄

  1. 破棄したいファイルを右クリック
  2. 「Discard changes…」を選択

Discard の復元

  • 直後:画面上部の一時的な「Undo」バナーがあればクリック
  • それ以降:OS のゴミ箱(Trash/ごみ箱)に「Discarded changes …」などの日付付きファイルとして保存されている場合がある
    • ゴミ箱を空にする前に「元に戻す」で復元可能
  • 注意:Windows で「ごみ箱を使わない」設定や、ネットワークドライブなど特殊環境では退避が失敗することがあります。重要作業の前は Stash や一時ブランチでの退避を推奨します。

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

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

  1. History タブで最新のマージコミットを右クリック
  2. 「Undo Commit」を選択
  3. コミットが取り消され、変更は Changes タブに戻る

→ 変更内容は残り、コミットだけやり直せます。

3-2. 数コミット前の状態に戻す(Reset to commit)

  1. History タブで戻したいコミットを右クリック
  2. 「Reset to this commit」を選択
  3. モードを選ぶ
    • Soft:変更はステージングに残る
    • Mixed(既定):変更は作業ツリーに残る
    • Hard:変更も破棄

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

  1. History タブで最新コミットを右クリック
  2. 「Amend commit」→「Begin Amend」を選択
  3. メッセージ修正や追加ファイルを反映
  4. 「Amend last commit」で確定

※ Push 済みのコミットを Amend した場合は、後で Force push が必要になります。


4. マージのやり直し

4-1. マージを Push する前

  1. History タブで最新のマージコミットを表示
  2. 「Undo」ボタンをクリック
  3. マージ前の状態に戻る

4-2. マージを Push した後

方法A:GitHub の Revert(GUI)

  1. GitHub のリポジトリで対象のマージコミットを開く
  2. 「Revert」ボタンをクリック
  3. 打ち消し用の PR が作成されるので、マージする

方法B:ターミナルで Revert

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

-m 1 は、マージ元の親(通常は main 側)を基準にする指定です。


5. Push 後のやり直し

5-1. Revert(推奨)

履歴を残したまま、指定したコミットの変更を打ち消すコミットを作成します。

GitHub Desktop:

  1. History で対象コミットを右クリック
  2. 「Revert changes in commit」を選択
  3. 打ち消しコミットが作成されるので、Push

ターミナル:

git revert <コミットのハッシュ>

5-2. Reset + Force push(個人ブランチのみ)

注意:共有ブランチでは使用しないでください。

git reset --hard <戻したいコミットのハッシュ>
git push --force

6. その他の便利な操作

Stash(一時退避)

  • Changes のヘッダーを右クリック → 「Stash all changes」
  • 後で適用するか破棄するかを選べます

Cherry-pick(特定コミットだけ移植)

  • History で対象コミットを右クリック → 「Cherry-pick commit」

Reflog(消えたコミットの救出)

git reflog
git switch -c rescue <ハッシュ>

7. CLI 早見表

# 直前コミットを取り消し(変更は作業ツリーに残す)
git reset --soft HEAD~1

# 任意のコミットまで戻す(変更は作業ツリーに残す)
git reset --mixed <hash>

# Push 済みを打ち消す
git revert <hash>

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

# 一時退避
git stash push -u
git stash list
git stash apply

8. チェックリスト

  • 作業ブランチは正しいか
  • 意味のまとまりで小さくコミットしているか
  • Push 前に Undo/Reset で不要なコミットを整理したか
  • 破壊的操作の前に Stash や一時ブランチで退避したか
  • Discard の復元はゴミ箱から可能か理解しているか

まとめ

タイミング主な方法
コミット前Discard(全ファイル or 一部)
コミット後・Push 前Undo、Reset to commit、Amend
Push 後Revert(基本)、Reset + Force push(個人ブランチのみ)
マージ後Push 前は Undo、Push 後は Revert

基本方針:未 Push は Undo/Reset、Push 済みは Revert。Discard はゴミ箱から復元できる場合があることを知っておくと安心です。

訪問数 18 回, 今日の訪問数 18回

広告