インタラクティブなリベースによる履歴の編集
インタラクティブなリベースでは、選択したコミットより上のコミットを書き換えます。それぞれを保持、書き換え、編集、潰し、修正または削除し、git rebase -i などの新しい順序にドラッグします。単一の変更の場合、コミットのメニューの Edit History は 1 ステップで実行します。
GitTree で動作します 無料: サインインすると、すべてのローカル Git 機能が利用できます。
始める前に
- 書き換えるコミットは現在のブランチ上にあり、その中にマージ コミットはありません。
- プッシュしていないコミットを優先します。書き換えられたコミットは新しい ID を取得します。
どこで見つけられますか
- 変更するコミットのすぐ下にあるコミットを右クリックします: Edit History › Interactive Rebase of the Commits Above…。
- 同じ Edit History メニューでのワンステップ編集: Edit Commit Message…、Drop Commit…、Move Commit Up、および Move Commit Down。
- いくつかのコミットを選択し、右クリックします: Squash Commits…。
| アクション | macOS | WindowsとLinux |
|---|---|---|
| Undo リベース全体 | ⌘Z | Ctrl+Z |
ステップ
エディタを開く
変更するコミットの下にあるコミットを右クリックし、Edit History › Interactive Rebase of the Commits Above… を選択します。再生される順序では、最も古いコミットが一番上にあります。

各ステップにはアクションがあります。ここでは、1 つのコミットが上記のコミットにまとめられ、別のコミットが書き換えられています。GitTree はデモ リポジトリとのインターフェイスです。 各コミットのアクションを選択する
各ステップで Action を設定します。Pick は保持し、Reword はメッセージを変更します。Edit は修正できるようにそこで停止します。Squash と Fixup は上記のコミットに組み込みます。Drop は省略します。
必要に応じて再注文する
ステップをハンドルでドラッグするか、ステップにフォーカスして Alt+↑ または Alt+↓ を押します。文字も使用できます。p、r、e、s、f、d はアクションを設定します。
リベースを開始する
Start Rebaseを押します。一部のコミットがすでにリモート上にある場合は、最初にそれらのコミットを再書き込みしていることを確認してください。 GitTree は Rebase finished. Undo can put the branch back. と言っています
期待される結果
ブランチは、新しい ID で書き換えられたコミットを保持します。古いブランチは refs/ogt/trash の下に保持されます。
それぞれのアクションの内容
| アクション | 結果 |
|---|---|
| Pick | コミットはそのまま残ります。 |
| Reword | 同じ変更ですが、エディターに新しいメッセージを入力します。 |
| Edit | このコミット後にリベースが停止するため、変更してバナーから続行できます。 |
| Squash | 上記のコミットに組み込まれています。メッセージが結合されます。 |
| Fixup | 上記のコミットに組み込まれています。それ自体のメッセージは破棄されます。代わりに Fixup, use its message がこのメッセージを保持します。 |
| Drop | 支店から外れました。 |
何か問題が発生した場合
「これらのコミットにはマージが含まれているため、ここにのみ表示でき、書き換えることはできません。」
GitTree の対話型リベースは線形履歴のみを書き換えます。マージの上のコミットから開始します。
「ステップ…何もないものに押し込みます。保持されたコミットの下に移動します。」
スカッシュまたはフィックスアップを折りたたむには、その上にコミットが必要です。それを移動するか、最初のステップを Pick に変更します。
質問
複数のコミットを 1 つにするにはどうすればよいですか?
グラフ内でそれらを選択し、Squash Commits… を選択します。Squash ダイアログ には、最初に結果、メッセージ、および共同作成者が表示されます。または、エディターで最初のコミット以降のすべてのコミットを Squash または Fixup に設定します。