付録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 タブに表示されている、まだコミットしていない変更
全ファイルを破棄
- Changes タブを選択
- 変更一覧の上で右クリック
- 「Discard all changes」を選択
- 確認ダイアログで「Discard all changes」をクリック
→ 最後のコミット時点の状態に戻ります。
一部のファイルだけ破棄
- 破棄したいファイルを右クリック
- 「Discard changes…」を選択
Discard の復元
- 直後:画面上部の一時的な「Undo」バナーがあればクリック
- それ以降:OS のゴミ箱(Trash/ごみ箱)に「Discarded changes …」などの日付付きファイルとして保存されている場合がある
- ゴミ箱を空にする前に「元に戻す」で復元可能
- 注意:Windows で「ごみ箱を使わない」設定や、ネットワークドライブなど特殊環境では退避が失敗することがあります。重要作業の前は Stash や一時ブランチでの退避を推奨します。
3. コミット後・Push 前:Undo と Reset
3-1. 直前のコミットを取り消す(Undo)
- History タブで最新のマージコミットを右クリック
- 「Undo Commit」を選択
- コミットが取り消され、変更は Changes タブに戻る
→ 変更内容は残り、コミットだけやり直せます。
3-2. 数コミット前の状態に戻す(Reset to commit)
- History タブで戻したいコミットを右クリック
- 「Reset to this commit」を選択
- モードを選ぶ
- Soft:変更はステージングに残る
- Mixed(既定):変更は作業ツリーに残る
- Hard:変更も破棄
3-3. 直前のコミットを修正する(Amend)
- History タブで最新コミットを右クリック
- 「Amend commit」→「Begin Amend」を選択
- メッセージ修正や追加ファイルを反映
- 「Amend last commit」で確定
※ Push 済みのコミットを Amend した場合は、後で Force push が必要になります。
4. マージのやり直し
4-1. マージを Push する前
- History タブで最新のマージコミットを表示
- 「Undo」ボタンをクリック
- マージ前の状態に戻る
4-2. マージを Push した後
方法A:GitHub の Revert(GUI)
- GitHub のリポジトリで対象のマージコミットを開く
- 「Revert」ボタンをクリック
- 打ち消し用の PR が作成されるので、マージする
方法B:ターミナルで Revert
git revert -m 1 <マージコミットのハッシュ>
-m 1 は、マージ元の親(通常は main 側)を基準にする指定です。
5. Push 後のやり直し
5-1. Revert(推奨)
履歴を残したまま、指定したコミットの変更を打ち消すコミットを作成します。
GitHub Desktop:
- History で対象コミットを右クリック
- 「Revert changes in commit」を選択
- 打ち消しコミットが作成されるので、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回



ディスカッション
コメント一覧
まだ、コメントがありません