Git
The `git rebase` command is a tool that reapplies the commit history of a branch onto the end of another branch to maintain a linear and clean history.
git rebase
Gitの git rebaseコマンドは、ブランチの履歴を整理するために使われる強力なツールです。
- git rebaseの基本的な概念
- git rebaseは、あるブランチの変更履歴を他のブランチの末尾に適用することで、履歴を再構成します。これにより、履歴が直線的になり、マージコミットなしでクリーンな履歴を保つことができます。
- git rebaseの主な用途
-
- 履歴のクリーンアップ
- 開発中にコミットした小さな変更や、冗長なコミットメッセージを整理するために使います。
- ブランチの最新化
- 他のブランチでの変更を取り込み、自分のブランチを最新の状態にするために使います。
- git rebaseの種類
-
- インタラクティブリベース (git rebase -i)
- コミットを再構成する際に、どのコミットを残し、どのコミットをスカッシュ(まとめる)するか、どのコミットを修正するかを指定できます。
- 非インタラクティブリベース
- 自動的に指定されたブランチの末尾に変更を適用します。
- git rebaseの基本的な使い方
-
- 基本的なリベース
-
Git Bash
git switch feature-branch git rebase main
- feature-branchブランチを mainブランチの最新のコミットに再適用します。
- インタラクティブリベース
-
Git Bash
git checkout feature-branch git rebase -i main
- インタラクティブモードでリベースを実行し、履歴を編集します。
インタラクティブリベースの操作例
git rebase -iコマンドは、インタラクティブなリベースを行うためのコマンドで、複数のコミットを編集、再配置、統合、削除する際に非常に便利です。このコマンドを使うと、コミット履歴をきれいにしたり、コミットメッセージを修正したりできます。
git rebase -iを実行すると、次のような編集画面が表示されます。
Git Bash
pick e5f6d3a First commit
pick a3c7e8b Second commit
pick 3b9d2b9 Third commit
この画面で、各コミットに対して以下のような操作が可能です。
- pick (もとのままコミットを適用)
- reword (コミットメッセージを変更)
- edit (コミット内容を修正)
- squash (前のコミットとまとめる)
- fixup (前のコミットとまとめ、メッセージは破棄)
- drop (コミットを削除)
git rebaseの注意点
- リモートブランチに対してリベースを行う場合
- 他の開発者と共有しているブランチに対してリベースを行うと、コンフリクトが発生しやすくなります。一般的には、公開済みのブランチに対してリベースは避けるべきです。
- コンフリクトの解決
- リベース中にコンフリクトが発生した場合、コンフリクトを手動で解決し、git rebase --continueでリベースを続行します。