Menu
Coddy logo textTech

Git Rebase

最終更新

git rebase はブランチのコミットを移動して別のブランチの上に再適用し、マージコミットではなくまっすぐで線形な履歴を作ります。インタラクティブリベース (-i) はさらに一歩進んで、コミットのスカッシュ、並べ替え、編集、削除を可能にします。リベースはコミットを書き換えるため、まだ共有していない作業に対してのみ行ってください。

これらをターミナルプレイグラウンドで試してみましょう。ブラウザ内の本物のシェルで、インストールは不要です。

構文

CommandWhat it does
git rebase mainあなたのコミットを main の上に再適用する
git rebase -i HEAD~3直近の3つのコミットをインタラクティブに編集する
git rebase --onto main old newコミットの範囲を main の上に移動する
git rebase --continueコンフリクトを解決した後に再開する
git rebase --abortリベースを取り消し、ブランチを復元する
git pull --rebaseマージの代わりにプルとリベースを行う

インタラクティブリベースのキーワード

-i が開くエディタで、pick をこれらのいずれかに変更します。

KeywordWhat it does
pickコミットをそのまま残す
rewordコミットを残し、メッセージを編集する
squash前のコミットに統合し、メッセージをまとめる
fixup統合するが、このメッセージは破棄する
dropコミットを完全に削除する

git rebase のよくある質問

git rebase は何をしますか?
現在のブランチのコミットを取り出し、そのブランチの最新コミットから作業を始めたかのように、別のブランチの上に1つずつ再適用します。その結果、マージコミットのない線形な履歴になります。この過程でコミットは書き換えられます(新しいハッシュが付与されます)。
インタラクティブリベースとは何ですか?
git rebase -i <base><base> 以降のコミットを一覧表示するエディタを開き、そこでコミットを並べ替えたり、複数を1つに squash したり、メッセージを reword したり、コミットを edit したり、drop したりできます。共有する前に乱雑なコミット列を整理するための主要なツールです。
リベースの黄金律とは何ですか?
他の人がすでに作業の基礎としているコミット、通常は共有ブランチにプッシュされたものは、決してリベースしないでください。リベースはコミットを書き換えるため、そうすると他の全員が分岐した履歴を調整させられます。ローカルの未プッシュのコミットは自由にリベースし、公開されたものには merge や revert を使ってください。
コンフリクトのあるリベースを修正または中止するにはどうすればよいですか?
リベースがコンフリクトで停止したら、ファイルを解決し、それらを git add してから git rebase --continue を実行します。現在のコミットを破棄するには git rebase --skip を、完全に中止してブランチをリベース開始前の状態に戻すには git rebase --abort を使います。
これをオンラインで練習できますか?
はい。ターミナルプレイグラウンドを開けば、ブラウザ内の本物のシェルで git rebase を実行できます。インストールは不要です。Coddy の無料インタラクティブ Git コースでもリベースを段階的に扱っています。
Coddy programming languages illustration

Coddy で Git を学ぼう

始める