IntelliJ IDEA 2019.3ヘルプ

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

Gitでは、あるブランチから別のブランチへの変更をブランチのマージブランチのリベース、またはあるブランチから別のブランチに別々のコミットを適用する (チェリーピック)に統合するいくつかの方法があります。

IntelliJ IDEAでは、ブランチを使用したすべての操作はGit ブランチポップアップで実行されます。呼び出すには、ステータスバーのGitウィジェットをクリックするか、Ctrl+Shift+`を押します。

Git widget

ブランチのマージ

特定のタスクを処理するための機能ブランチを作成し、その機能を完成してテストした後で、その作業の結果をメインのコードベースに統合したいとします。

feature branch diagram

ブランチをマスターにマージがこれを行うための最も一般的な方法です。

機能ブランチで作業している間、あなたのチームメイトは作業を習得し続けます:

feature branch diverged from master

mergeを実行すると、機能ブランチからの変更がターゲットブランチのHEADに統合されます。

merge result
Gitは、2つのブランチが分岐したポイントからあなたのフィーチャブランチとマスターからの変更を組み合わせたマージコミットと呼ばれる新しいコミット(M)を作成します。

ブランチのマージ

  1. ブランチポップアップで、変更を統合したいターゲットブランチを選択し、ポップアップメニューからチェックアウトを選択してそのブランチに切り替えます。

  2. IntelliJ IDEAウィンドウの下部にあるブランチポップアップをクリックし、ターゲットブランチにマージしたいブランチを選択して、サブメニューから現在にマージするを選択します。

作業ツリーがクリーンで(コミットされていない変更がないことを意味します)、フィーチャブランチとターゲットブランチの間に競合が発生しない場合、Gitは2つのブランチをマージし、マージコミットがバージョン管理ツールのログタブに表示されます。ウィンドウ Alt+9

merge commit

ブランチとターゲットブランチの間で競合が発生した場合、解決するように求められます(競合の解決を参照)。マージ後に未解決の競合が残っている場合、競合をマージするノードは、バージョン管理ツールウィンドウ Alt+9ローカルの変更タブの対応する変更リストに、解決するリンクとともに表示されます。

マージによって上書きされるローカルの変更がある場合、IntelliJ IDEAはスマート・マージを実行することを提案します。このオプションを選択すると、IntelliJ IDEAはコミットされていない変更をスタッシュし、マージを実行してから、変更を取り消します。

ブランチのリベース

ブランチを別のブランチに rebase するとき、ターゲットブランチにマージするのではなく、最初のブランチからのコミットを2番目のブランチのHEADコミットの上に適用します。

特定のタスクを処理し、そのブランチに対していくつかのコミットを行う機能ブランチを作成したとします。

featuer branch

ブランチで開発している間、あなたのチームメートは自分の作業を習得し続けます:

feature branch diverged from master

rebase 操作を実行すると、masterの現行のHEADコミットの上にコミットを適用することによって、機能ブランチで行った変更を master ブランチに統合できます。

rebase operation result

現在のブランチを別のブランチの上に再構築する

  1. ブランチポップアップで、現在のブランチをリベースしたいブランチを選択します。

  2. ポップアップメニューからカレントを選択基準に再調整するを選択してください。

現在のブランチの上にブランチを再構築する

  1. ブランチポップアップで、現在のブランチの上にリベースしたいブランチを選択します。

  2. ポップアップメニューからチェックアウトして現在のものに戻すを選択してください。

リベース中にコミットをスキップまたはスキッシュする方法の詳細については、インタラクティブなリベースを実行してプロジェクト履歴を編集するを参照してください。

バージョン管理ツールウィンドウ Alt+9ログタブにマージまたはリベース操作がどのように反映されるかを確認するには、このビデオを参照してください。


チェリーピックの個別のコミット

場合によっては、ブランチ全体をリベースまたはマージするのではなく、単一のコミットのみを別のブランチに適用する必要があります。これは、たとえば、機能ブランチで作業していて、2つのブランチが分岐した後にコミットされたマスターからの修正プログラムを統合する場合に便利です。または、以前のリリースブランチの修正をバックポートすることもできます。これを行うには、チェリーピックアクションを使用します。

チェリーピック操作のステータスがステータスバーに表示されます。Git ブランチポップアップでチェリーピックを中止を選択すると、進行中のチェリーピックをいつでも中止できます。

Cherry pick operation status

他のブランチにコミットを適用する

  1. ブランチポップアップで、変更を統合したいターゲットブランチを選択し、ポップアップメニューからチェックアウトを選択してそのブランチに切り替えます。

  2. バージョン管理ツールウィンドウ Alt+9 を開き、ログタブに切り替えます。

  3. チェリーピックする変更を含むコミットを探します。

    ブランチ、ユーザー、または日付でコミットをフィルターできます。ツールバーの eye icon をクリックし、強調表示 | 未選択のコミットボタン Non-Picked Commits を選択して、現在のブランチに既に適用されているコミットをグレーアウトすることもできます。コミットハッシュがわかっている場合、またはタグ付きコミットを探している場合は、ハッシュ/ ブランチ /タグに移動アクションを使用することもできます(バージョン管理ツールウィンドウ Alt+9ログタブで Ctrl+F を押すか、ツールバーの Search をクリックします)。

  4. 必要なコミットを選択してください。コミット詳細エリアの情報を使用して、これらが別のブランチに転送したい変更であることを確認してください。

  5. ツールバーのチェリーピック the Cherry-Pick button をクリックします。IntelliJ IDEAは、自動的に生成されたコミットメッセージとともに変更のコミットダイアログを表示します。変更を確認したり、ターゲットブランチにコミットする前にコードを変更したい場合は、このダイアログから利用可能な差分ビューアーで行うことができます。

  6. 完了したら、コミットをクリックして選択した変更をチェリーピックします。

    キャンセルをクリックすると、バージョン管理ツールウィンドウ Alt+9ローカルの変更タブに表示される選択された変更を含む個別の変更リストが作成されることに注意してください。これらの変更を確認し、必要に応じて後でコミットできます。

  7. ターゲットブランチへの変更をプッシュします。

個別の変更を適用する

別のブランチに適用するファイルに変更を加えたが、これらの変更は他の変更されたファイルと一緒にコミットされたと想像してください。IntelliJ IDEAでは、コミット全体を選択する代わりに、個別の変更を適用できます。

  1. ブランチポップアップで、変更を統合したいターゲットブランチを選択し、ポップアップメニューからチェックアウトを選択してそのブランチに切り替えます。

  2. バージョン管理ツールウィンドウ Alt+9 を開き、ログタブに切り替えます。

  3. 適用したい変更が含まれているコミットを見つけます。

    ブランチ、ユーザー、または日付でコミットをフィルターできます。ツールバーの eye icon をクリックし、強調表示 | 未選択のコミットボタン Non-Picked Commits を選択して、現在のブランチに既に適用されているコミットをグレーアウトすることもできます。コミットハッシュがわかっている場合、またはタグ付きコミットを探している場合は、ハッシュ/ ブランチ /タグに移動アクションを使用することもできます(バージョン管理ツールウィンドウ Alt+9ログタブで Ctrl+F を押すか、ツールバーの Search をクリックします)。

  4. 右側のコミット詳細ペインで、ターゲットブランチに適用する変更を含むファイルを選択し、コンテキストメニューから選択された変更を適用を選択します。

  5. 開いたダイアログで、既存の変更リストを選択するか、新しい変更リストの名前を入力してOKをクリックします。

  6. 変更をコミットしてから、ターゲットブランチにプッシュします。

個別のファイルを適用する

単一のファイルに個別の変更を適用することに加えて、ファイルのコンテンツ全体を別のブランチにコピーできます。これは、たとえば、適用するファイルがターゲットブランチに存在しない場合や、複数のコミット内で変更が加えられた場合に便利です。

  1. チェックアウト変更が適用されるブランチ。

  2. ブランチポップアップで、適用するファイルを含むブランチをクリックし、現在と比較を選択します。

  3. ファイルタブに切り替え、現在のブランチに適用するファイルを選択し、コンテキストメニューからブランチからを選択します。

  4. 変更をコミットしてプッシュします。IntelliJ IDEAは、ファイルの内容全体を現在のブランチにコピーします。

最終更新日: 2019年12月24日