Git rebaseでよくある問題と解決法
Gitのrebase操作中に発生しやすい問題とその対処法を初心者向けに丁寧に解説。コンフリクト、履歴の上書き、操作ミスなど、rebase時のトラブル対応をわかりやすくまとめます。
Git rebaseとは?
git rebase
は、あるブランチの変更履歴を、別のブランチの先頭に付け替えるコマンドです。主に以下の目的で使われます:
- 履歴をきれいに整える(直線的な履歴)
- 複数のブランチ作業を統合する前に整理
ただし、強力な反面、操作を誤ると履歴の破損や意図しない変更が発生することがあります。
よくある問題①:コンフリクトの発生
発生原因
- rebase中に、同じ箇所を編集したコミット同士がぶつかる
解決方法
- 対象ファイルを開き、コンフリクト箇所を手動で修正
- 修正後にステージング
git add ファイル名
- rebaseを続行
git rebase --continue
補足
- 複数回コンフリクトが発生することもあるので、都度対応が必要
よくある問題②:誤ってrebaseしてしまった
例:間違ったブランチにrebaseした、変更内容が消えた
解決方法
で過去の状態を確認reflog
git reflog
- 元に戻したいコミットIDをチェックアウト
git checkout -b recovery-branch コミットID
よくある問題③:rebase後のpushでエラーになる
エラーメッセージの例
! [rejected] main -> main (non-fast-forward)
原因
- rebaseにより履歴が書き換わり、リモートとローカルの履歴が一致しなくなった
解決方法
git push --force-with-lease
※ チーム開発時は事前に合意を取ること!
よくある問題④:対話式rebaseでの操作ミス
症状
中に不要なコミットを削除、順序を間違えるなどrebase -i
解決方法
でrebaseを中断し、やり直すgit rebase --abort
やgit log
で状態確認し、再実行git reflog
よくある問題⑤:途中で止まって進められない
原因
- コンフリクト未解消、ステージング忘れ、メッセージ編集未完了など
対処
で現在の状態を確認git status
- 必要な操作を行ってから
git rebase --continue
まとめ:rebaseは便利だが慎重に扱おう
git rebase
は非常に強力な履歴整理ツールですが、その分リスクも伴います。特に共有ブランチやリモートとの整合性に注意しながら操作を行いましょう。何か起きても reflog
で復旧できるので、落ち着いて対処すれば問題ありません。
編集部