IntelliJ IDEA 2020.3 ヘルプ

Git プロジェクト履歴を編集する

Git を使用すると、プロジェクト履歴を編集できます。これは、機能ブランチで作業していて、他の人と共有する前に、それをクリーンアップして希望どおりに表示したい場合に便利です。例: コミットメッセージを編集したり、同じ機能に関連する小さなコミットをまとめたり、無関係な変更を含むコミットを個別のコミットに分割したり、前のコミットに変更を追加したりできます。

コミットメッセージを編集する

変更する必要があるのがコミットメッセージだけであれば、このコミットをプッシュする前にそれを編集できます。

  1. Git ツールウィンドウ Alt+9ログタブでメッセージを編集するコミットを右クリックし、コンテキストメニューからコミットメッセージの編集を選択するか、F2 を押します。

  2. 開いたダイアログで、新しいコミットメッセージを入力し、OK をクリックします。

前のコミットを修正する

ときどき早くコミットしていくつかのファイルを追加し忘れたり、最後のコミットで別のコミットを作成せずに修正したいエラーに気づくことがあります。

これは、前のコミットに段階的な変更を追加するコミットを修正オプションを使用して行うことができます。その結果、2 つの異なるコミットではなく、1 つのコミットで終了します。

  1. ローカルの変更ビューで、以前のコミットに追加する変更を選択します。

  2. 修正チェックボックスを選択してコミットボタンをコミットを修正に変更し、クリックします。

以前のコミットを修正する

以前のコミットに変更を個別にコミットするのではなく追加する必要がある場合は、fixup または squash アクションを使用して変更できます。どちらのコマンドも、選択したコミットに段階的な変更を追加しますが、コミットメッセージの処理は異なります。

  • squash は新しいコミットメッセージを元のコミットに追加します

  • fixup は新しいコミットメッセージを破棄し、元のコミットからのメッセージだけを残します

  1. ローカルの変更ビューで、以前のコミットに追加する変更を選択します。

  2. Git ツールウィンドウ Alt+9ログタブで、ローカルの変更で変更するコミットを右クリックし、コンテキストメニューからフィックスアップまたはスカッシュインを選択します。

  3. 変更を無効にすることを選択した場合は、必要に応じてコミットメッセージを修正します。

  4. コミットボタンの矢印をクリックしてコミットしてリベースを選択します。

コミットをスカッシュ

同じ機能に関連する 2 つのコミットを統合する必要がある場合は、ブランチの履歴をより明確にするために、1 つにまとめることができます。

  1. Git ツールウィンドウ Alt+9ログタブで、1 つに結合するコミットを選択し、コンテキストメニューからコミットをスカッシュを選択します。

  2. 開いたダイアログで、コミットメッセージを編集し(デフォルトでは、両方のコミットからのメッセージが含まれています)、OK をクリックします。

  3. Ctrl+Shift+K をリモートブランチへの変更をプッシュします。

コミットを削除する

変更を元に戻す追加のコミットを作成せずに、現在のブランチでプッシュされたコミットを破棄できます。

  • ログビューで破棄するコミットを選択し、コンテキストメニューからコミットの削除を選択します。

対話的なリベースを実行してプロジェクト履歴を編集する

IntelliJ IDEA に Git を統合すると、対話的なリベースを実行することで、プロジェクト履歴を線形で意味のあるものにするために編集できます。これにより、機能ブランチから別のブランチへの変更を統合する前に、個々のコミットの変更、順序の変更、コミットの 1 つへの押しつぶし、無関係な変更を含むコミットのスキップなどによって、コミット履歴をクリーンアップできます。

現在のブランチの履歴を編集する

IntelliJ IDEA では、変更を別のブランチに適用する前に、現在のブランチのコミット履歴を編集できます。

  1. Git ツールウィンドウ Alt+9 を開き、ログタブに切り替えます。

  2. 現在のブランチからのコミットのみを表示するようにログをフィルタリングします。

    Filter log by branch
  3. 編集する一連のコミットの中で最も古いコミットを選択し、右クリックしてここから対話的にリベースを選択します。

    選択したコミット後に行われた現在のブランチのすべてのコミットのリストを含むインタラクティブリベースダイアログが表示されます。

    Interactive Rebase dialog

    ここから対話的にリベースオプションが無効になっている場合は、次のいずれかの理由が考えられます。

    • 選択したコミットには複数の親があります

    • 選択したコミットは現在のブランチにありません

    • 選択されたコミットは保護されたブランチにプッシュされます

    理由を特定するには、コンテキストメニューでアクションにカーソルを合わせ、ステータスバーでメッセージを探します。

    Status bar message
  4. ブランチ履歴に対して次の変更を実行できます。

    • コミットを適用する順序を変更する : up arrow および down arrow ボタンを使用して、コミットをリストの上下に移動します。

    • コミットを選択 : これは、すべてのコミットのデフォルトの状態です。コミットに対してすでに実行したアクションを取り消す必要がある場合は、ピック Icons actions rollback をクリックして、このコミットがそのまま適用されるようにします。

    • 編集 : 停止して編集 the Pause button をクリックして、リベースを開始するときに、このコミットで停止して編集できるようにします。

      コミット時にリベースが停止すると、IntelliJ IDEA ウィンドウの右下隅に通知がポップアップ表示され、リベースを続行または中止できます。

      the rebase status notification

      リベースを続行する前に、コンテキストアクション(元に戻す元に戻す修正など)を使用してこのコミットを変更できます。アクションを実行しない場合、このコミットはそのまま適用されます。

      通知を閉じた場合は、メインメニューから Git | リベースを続行を選択して再開します。

    • コミットメッセージを言い換える : リワードをクリックするか、コミットをダブルクリックして、開いたミニエディターでテキストを編集します。

    • 2 つのコミットを 1 つに結合する : 前のコミットに統合するコミットを選択し、スカッシュまたはスカッシュボタンの横にある矢印をクリックしてからフィックスアップをクリックします。

      スカッシュをクリックすると、デフォルトで 2 つのコミットからのメッセージが結合されるため、結果のコミットメッセージを変更しない場合、このアクションはブランチ履歴に反映されます。

      フィックスアップをクリックすると、フィックスアップコミットのコミットメッセージが破棄されるため、この変更はブランチ履歴に表示されません。

      どちらの場合も、これらのアクションのいずれかを適用すると開くミニエディターでコミットメッセージを編集できます。

    • コミットを無視する : 破棄をクリックして、選択したコミットからの変更が適用されないようにします。

    • 変更点をすべて元に戻す : リセットをクリックして、コミットに適用したすべてのアクションを破棄します。

    その結果、コミットをリベースダイアログには、ブランチのコミットに適用したすべてのアクションを示すグラフが表示されるため、リベースを開始する前に確認できます。

    Interactive Rebase graph
  5. リベース開始をクリックします。

ブランチの履歴を編集し、別のブランチに統合する

IntelliJ IDEA を使用すると、ブランチを別のブランチ上にリベースし、変更を適用する前にソースブランチ履歴を編集できます。

  1. メインメニューから Git | リベースを選択します。

    Git rebase dialog
  2. オプションを変更をクリックし、--interactive を選択します。

  3. リストから、現在のブランチをリベースするターゲットブランチを選択します。

    Choose target branch in the Git rebase dialog

  4. ブランチ全体をリベースするのではなく、特定のコミットからソースブランチをリベースする必要がある場合は、オプションを変更をクリックして --onto を選択します。ソースブランチフィールドに、現在のブランチを新しいベースに適用する開始点となるコミットのハッシュを入力します。

    Specify commit hash with --onto
  5. リベースするブランチが現在チェックアウトされていない場合は、オプションを変更リベースする別のブランチを選択の順にクリックし、表示されるリストからブランチを選択します。

    Choose the branch you want to rebase

    IntelliJ IDEA は、リベース操作を開始する前に、このブランチをチェックアウトします。

  6. ブランチで到達可能なすべてのコミットをリベースする場合は、オプションを変更をクリックして、--root を選択します(このオプションの詳細については、git-rebase(英語) を参照してください)。

  7. 親から何も変更されないコミットである空のコミットを保持する必要がある場合は、オプションを変更をクリックして --keep-empty を選択します(このオプションの詳細については、git-rebase(英語) を参照してください)。

  8. リベースをクリックします。

    選択したコミット後に作成された、現在のブランチ内のすべてのコミットのリストを含むインタラクティブリベースダイアログが表示されます。

    Interactive Rebase dialog
  9. ブランチ履歴に対して次の変更を実行できます。

    • コミットを適用する順序を変更する : up arrow および down arrow ボタンを使用して、コミットをリストの上下に移動します。

    • コミットを選択 : これは、すべてのコミットのデフォルトの状態です。コミットに対してすでに実行したアクションを取り消す必要がある場合は、ピック Icons actions rollback をクリックして、このコミットがそのまま適用されるようにします。

    • 編集 : 停止して編集 the Pause button をクリックして、リベースを開始するときに、このコミットで停止して編集できるようにします。

      コミット時にリベースが停止すると、IntelliJ IDEA ウィンドウの右下隅に通知がポップアップ表示され、リベースを続行または中止できます。

      the rebase status notification

      リベースを続行する前に、コンテキストアクション(元に戻す元に戻す修正など)を使用してこのコミットを変更できます。アクションを実行しない場合、このコミットはそのまま適用されます。

      通知を閉じた場合は、メインメニューから Git | リベースを続行を選択して再開します。

    • コミットメッセージを言い換える : リワードをクリックするか、コミットをダブルクリックして、開いたミニエディターでテキストを編集します。

    • 2 つのコミットを 1 つに結合する : 前のコミットに統合するコミットを選択し、スカッシュまたはスカッシュボタンの横にある矢印をクリックしてからフィックスアップをクリックします。

      スカッシュをクリックすると、デフォルトで 2 つのコミットからのメッセージが結合されるため、結果のコミットメッセージを変更しない場合、このアクションはブランチ履歴に反映されます。

      フィックスアップをクリックすると、フィックスアップコミットのコミットメッセージが破棄されるため、この変更はブランチ履歴に表示されません。

      どちらの場合も、これらのアクションのいずれかを適用すると開くミニエディターでコミットメッセージを編集できます。

    • コミットを無視する : 破棄をクリックして、選択したコミットからの変更が適用されないようにします。

    • 変更点をすべて元に戻す : リセットをクリックして、コミットに適用したすべてのアクションを破棄します。

    その結果、コミットをリベースダイアログには、ブランチのコミットに適用したすべてのアクションを示すグラフが表示されるため、リベースを開始する前に確認できます。

    Interactive Rebase graph
  10. リベース開始をクリックします。

関連ページ:

ある Git ブランチから別の Git へ変更を適用する

Git では、あるブランチから別のブランチへの変更を統合するいくつかの方法があります。ブランチのマージ、ブランチのリベース、あるブランチから別のブランチに別々のコミットを適用する (チェリーピック)、コミットから個別の変更を適用する、特定のファイルをブランチに適用する、ブランチのマージ:特定のタスクで機能する機能ブランチを作成し、機能を完了してテストした後、作業の結果をメインコードベースに統合するとします。これを行う最も一般的な方法は、ブランチをマスターにマージすることです。機能ブランチで作業...

変更をコミットして Git リポジトリにプッシュする

Git リポジトリに新しいファイルを追加した後、またはすでに Git バージョン管理下にある変更されたファイルを追加し、それらの現在の状態に満足したら、作業の結果を共有できます。これには、リポジトリのスナップショットをプロジェクト履歴に記録するためにローカルにコミットしてから、プッシュをリモートリポジトリにコミットして、他のユーザーが利用できるようにすることが含まれます。Git ユーザー名を設定する Git は、コミットを ID に関連付けるために、ユーザー名を知っている必要があります。ユーザー名...

Git リポジトリの変更を元に戻す

コミットされていない変更を元に戻すコミットする前に、ローカルで行った変更をいつでも元に戻すことができます。コミットツールウィンドウで、元に戻すファイルを 1 つ以上選択し、コンテキストメニューからロールバックを選択するか、を押します。最後のコミット以降に選択したファイルに加えられたすべての変更は破棄され、アクティブな変更リストから消えます。最後のコミットを取り消す IntelliJ IDEA を使用すると、現在のブランチの最後のコミットを元に戻すことができます。保護されたブランチ、つまり for...

タグを使用して特定の Git コミットをマークする

Git を使用すると、コミットにタグを付けて、プロジェクト履歴の特定のポイントをマークし、将来参照できるようにすることができます。例: リリーススナップショットをキャプチャーするためにブランチを作成する代わりに、リリースバージョンに対応するコミットにタグを付けることができます。コミットにタグを割り当てる Git ツールウィンドウを開き、ログタブに切り替えます。目的のコミットを見つけて右クリックし、コンテキストメニューから新規タグを選択します。新しいタグの名前を入力し、OK をクリックします。タグは、...