14

次のようなブランチのインタラクティブなリベースを実行したいと思います。

git rebase -i HEAD~4

IntelliJIDEAでこれを行う方法が見つかりませんでした。これが可能かどうかアドバイスしてください。ありがとうございました。

4

2 に答える 2

19

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 は、最初に考えて範囲とターゲットを特定することを強制します。これはより複雑に見えますが、結果がどうなるかを理解せずにリベースを実行することを防ぎます。

于 2013-07-17T10:37:51.140 に答える