次のようなブランチのインタラクティブなリベースを実行したいと思います。
git rebase -i HEAD~4
IntelliJIDEAでこれを行う方法が見つかりませんでした。これが可能かどうかアドバイスしてください。ありがとうございました。
次のようなブランチのインタラクティブなリベースを実行したいと思います。
git rebase -i HEAD~4
IntelliJIDEAでこれを行う方法が見つかりませんでした。これが可能かどうかアドバイスしてください。ありがとうございました。
IntelliJ 12.1 のリベース ダイアログは、最も一般的なバージョンのリベース コマンドを使用します。
git rebase [-i] [--onto newbase] [upstream] [branch]
ここで、IntelliJ の「Onto」フィールドは に対応し--onto newbase
、IntelliJ の「From」フィールドは「upstream」に対応し、IntelliJ の「Branch」フィールドは「branch」に対応します。
上記の git rebase コマンドでは、すべてのパラメーターはオプションですが、IntelliJ ではそうではありません。これは、git rebase コマンドを取得し、上記の一般的な形式を使用して表現する必要があることを意味します。
rebase コマンドの引数で実際に行うことは、新しいターゲットの場所で再生されるコミットの範囲を定義することであることに注意してください。通常、範囲はupstream..branch
です。コミット範囲に慣れていない場合は、それらを読んでください。
あなたの例を見て、あなたがブランチ「ブランチ」にいると仮定しましょう:
git rebase -i HEAD~4
まず、範囲がどれであるかを把握しましょう。引数が 1 つしかないためHEAD~4
、これは上流に対応します。つまり、範囲はHEAD~4..branch
ブランチHEAD~4..HEAD
「branch」です。問題は、どれが --onto ターゲットかということです。を避ける--onto
と、git はあなたのアップストリームもあなたの--onto
.
これにより、次の結果が得られます。
git rebase -i --onto HEAD~4 HEAD~4 branch
これで、IntelliJ のリベース ダイアログに入力できるようになりました。
HEAD~4
HEAD~4
branch
実際、IntelliJ は、最初に考えて範囲とターゲットを特定することを強制します。これはより複雑に見えますが、結果がどうなるかを理解せずにリベースを実行することを防ぎます。