シナリオ別 解決手順
「こういう時どうする?」を解決する手順集です。
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日間保持されます