シナリオ別 解決手順

「こういう時どうする?」を解決する手順集です。

1. 特定ファイルを過去の状態に戻す

編集したファイルを、過去のコミット時点に戻したい

手順コマンド説明
git log --oneline -- ファイル名 ファイルの履歴を確認
git checkout コミットID -- ファイル名 指定コミットの状態に戻す

2. 編集中の変更を破棄

まだコミットしていない変更を取り消したい

手順コマンド説明
git restore ファイル名 変更を破棄(新しい書き方)

※旧: git checkout -- ファイル名 でも可

3. 直前のコミットをやり直す

コミットしたけど、修正したい・メッセージを変えたい

手順コマンド説明
git reset --soft HEAD~1 コミット取消(変更は残る)
(ファイルを修正) 必要な修正を行う
git add . 変更をステージング
git commit -m "メッセージ" 再コミット

※push済みの場合はシナリオ4を使用

4. push済みコミットを取り消す

リモートにpushした後で取り消したい(安全な方法)

手順コマンド説明
git log --oneline 取り消すコミットIDを確認
git revert コミットID 打ち消しコミットを作成
git push リモートに反映

※revertは履歴を残して安全に取り消す方法

5. マージを中止する

マージ中にコンフリクトが起きて、やめたい

手順コマンド説明
git merge --abort マージを中止して元に戻る

6. 消したファイルを復活させる

誤って削除したファイルを取り戻したい

手順コマンド説明
git checkout HEAD -- ファイル名 最新コミットから復元

※コミット済みのファイルのみ復元可能

7. 作業を一時退避してブランチ切替

編集途中だけど、別ブランチで急ぎの作業が必要

手順コマンド説明
git stash 現在の作業を一時退避
git switch 別ブランチ 別ブランチに切替
(急ぎの作業を実施) コミット・プッシュなど
git switch 元のブランチ 元のブランチに戻る
git stash pop 退避した作業を復元

8. 間違えてaddしたファイルを取り消す

git addしたけど、やっぱりコミットに含めたくない

手順コマンド説明
git restore --staged ファイル名 ステージングを取り消し

※旧: git reset HEAD ファイル名 でも可

9. リモートの変更を取り込む(安全に)

チームメンバーの変更を確認してから取り込みたい

手順コマンド説明
git fetch origin リモートの情報を取得(マージなし)
git log HEAD..origin/main リモートの新しいコミットを確認
git merge origin/main 問題なければマージ

10. 特定のコミットだけ取り込む

他ブランチの特定の修正だけ欲しい

手順コマンド説明
git log --oneline 対象ブランチ 取り込みたいコミットIDを確認
git cherry-pick コミットID 指定コミットを現在のブランチに適用

11. コンフリクトを解決する

マージしたら競合が発生した

手順コマンド説明
git status 競合ファイルを確認
(エディタで競合箇所を修正) <<<, ===, >>> を削除して正しい内容に
git add 競合ファイル 解決したファイルをステージング
git commit マージコミットを完了

12. コミットメッセージを修正する

直前のコミットメッセージにタイポがあった

手順コマンド説明
git commit --amend -m "新しいメッセージ" 直前のコミットメッセージを修正

※push済みの場合は git push --force が必要(要注意)

13. ローカルをリモートに完全に合わせる

ローカルが壊れた、リモートの状態に戻したい

手順コマンド説明
git fetch origin リモートの最新情報を取得
git reset --hard origin/main ローカルをリモートに強制的に合わせる

※ローカルの変更は全て失われるので要注意!

14. .gitignoreに追加したのに無視されない

既に追跡されているファイルを除外したい

手順コマンド説明
git rm --cached ファイル名 追跡から除外(ファイルは残る)
(.gitignoreにファイル名を追加) 今後の追跡を防止
git commit -m "Remove from tracking" 変更をコミット

15. 誤ってresetしたコミットを復活させる

git reset --hardで消したコミットを取り戻したい

手順コマンド説明
git reflog HEADの移動履歴を確認
git reset --hard HEAD@{n} 復活させたい時点に戻る(nは番号)

※reflogは約90日間保持されます