git rebase – コミット履歴を付け替えるコマンド

リポジトリ管理 履歴・補完

git rebase コマンドは、あるブランチの変更を別のブランチの先頭に付け替えるためのコマンドです。
履歴を整理して直線的にすることで、ログを見やすく保ちたいときに利用されます。

構文(Syntax)

git rebase [オプション] <ブランチ名>

主なオプション一覧

オプション説明使用例
<ブランチ名>指定ブランチに現在のブランチを付け替えgit rebase main
-i <ブランチ名>インタラクティブリベース(コミット編集・統合・削除)git rebase -i HEAD~3
--onto <新ベース> <開始点> <ブランチ>特定の範囲を別のベースに付け替えgit rebase --onto main feature~2 feature
--continueコンフリクト解消後にリベースを続行git rebase --continue
--abortリベースを中止して元の状態に戻すgit rebase --abort
--skip問題のあるコミットをスキップgit rebase --skip

実行例

基本的なリベース(main の最新に追従)

git checkout feature
git rebase main

インタラクティブリベースでコミット整理

git rebase -i HEAD~3

出力例(エディタが開く):

pick 1a2b3c4 Add login feature
pick 5d6e7f8 Fix typo
pick 9z8y7x6 Update README

picksquash に変更すればコミットをまとめられる)

特定の範囲を別ブランチに付け替え

git rebase --onto main feature~2 feature

コンフリクト発生時の解決フロー

git rebase main
# コンフリクト発生
# ファイルを修正後
git add conflict_file.py
git rebase --continue

リベースを中止

git rebase --abort

コミットをスキップ

git rebase --skip

エラー例(未コミットの変更がある場合)

git rebase main

出力例:

fatal: It seems that there is already a rebase-merge directory,
and I wonder if you are in the middle of another rebase.

関連コマンド

  • git merge : 履歴を保持したまま統合する方法。
  • git log --graph : リベース後の履歴を確認する。
  • git cherry-pick : 特定のコミットだけを適用する。

備考

  • 公開済みブランチをリベースすると履歴が書き換わり、他の人と競合が発生する可能性があるため注意。
  • ローカルブランチの整理や、プルリクエスト前のコミットをまとめる用途でよく使われる。
  • git rebase -i はコミットを編集・削除・まとめるのに便利。

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント