mochotomochotoロゴ

[Git]git rebaseで迷わないためのコマンド整理

広告Git
2025年12月28日

#はじめに

git rebase を使う時のまとめです。


#rebase コマンドの流れ

#rebase 開始

git rebase main

#競合が発生したとき

git status

rebase in progress と表示されていれば rebase 中です。

#競合解決後

git add .
git rebase --continue

#rebase を中断したい場合

git rebase --abort

#問題のあるコミットをスキップ

git rebase --skip

#rebase 完了後に push

git push --force-with-lease

#rebase 中に競合が起きた場合の詳細手順

ここからは、実際に競合が起きたときの流れを詳しく見ていきます。

#① rebase 中に競合が発生

git rebase main
 
CONFLICT (content): Merge conflict in mochoto-example.txt

この時点で rebase は一時停止しています。

#② 競合ファイルを確認

git status
 
both modified: mochoto-example.txt
 

#③ 競合を解決する

競合ファイルには以下のような記述があります。

<<<<<<< HEAD
main ブランチの変更
=======
自分の変更
>>>>>>> feature
 

不要なマーカーを削除し、正しい内容だけを残します。

#④ 解決したファイルをステージング

git add mochoto-example.txt

またはすべてまとめて:

git add .

#⑤ rebase を再開

git rebase --continue

次のコミットで競合があれば再度停止

問題なければ rebase 完了

#rebase 後に必ず --force-with-lease を使う理由

Before:
A---B---C
 
After rebase:
A---B'---C'

このため、通常の git push は拒否されます。

❌ 危険:git push --force git push --force

他人の push があっても 無条件で上書き

チーム開発では事故の原因になる

✅ 推奨:git push --force-with-lease git push --force-with-lease

自分が最後に確認したリモート状態と一致している場合のみ上書き

他人の作業を誤って消さない

#まとめ

rebase 後の競合解決は git addgit rebase --continue

rebase 後の push は 必ず --force-with-lease

--force は基本的に使わない