Git ブランチの管理
Git では、分岐 は強力なメカニズムであり、たとえば、機能で作業する必要がある場合や、リリースのためにコードベースの特定の状態をフリーズする必要がある場合などに、メインの開発ラインから分岐することができます。
IntelliJ IDEA では、ブランチによるすべての操作は Git ブランチポップアップで実行されます。これを呼び出すには、メインウィンドウのヘッダーで、現在チェックアウトされているブランチの名前を持つ Git ウィジェットをクリックします。
Git ツールウィンドウのブランチペインで、ブランチを管理し、複数のブランチでバッチ操作を実行することもできます。
新規ブランチの作成
現在のブランチから新しいブランチを作成する
ブランチポップアップで、新規ブランチを選択するか、Git ツールウィンドウのブランチペインで現在のブランチを右クリックして、「ブランチ名」からの新しいブランチを選択します。
表示されたダイアログでブランチ名を指定し、そのブランチに切り替える場合はブランチをチェックアウトするオプションが選択されていることを確認してください。
新しいブランチの名前を入力し始めると、IntelliJ IDEA は既存のローカルブランチの名前に基づいて関連するプレフィックスを提案します。
新しいブランチは、現在のブランチ HEAD から始まります。
選択したブランチから新しいブランチを作成する
ブランチポップアップまたは Git ツールウィンドウのブランチペインで、新しいブランチを開始するローカルまたはリモートブランチを選択し、選択からの新しいブランチを選択します。
表示されたダイアログでブランチ名を指定し、そのブランチに切り替える場合はブランチをチェックアウトするオプションが選択されていることを確認してください。
選択したコミットから新しいブランチを作成する
ログビューで、新しいブランチの開始点として機能するコミットを選択し、コンテキストメニューから新規ブランチを選択します。
表示されたダイアログでブランチ名を指定し、そのブランチに切り替える場合はブランチをチェックアウトするオプションが選択されていることを確認してください。
ブランチの名前を変更する
ブランチポップアップまたは Git ツールウィンドウのブランチペインで、名前を変更するブランチを選択し、名前変更を選択します。
開いたダイアログで、ブランチ名を必要な名前に変更します。
ブランチをお気に入りとしてマーク
ブランチがたくさんある場合は、お気に入りのものだけを表示することをお勧めします。メインのブランチは、デフォルトでお気に入りとしてマークされています。お気に入りのブランチは、常にブランチポップアップの上部と Git ツールウィンドウのブランチペインに表示されます。
ブランチをお気に入りとしてマークするには、ブランチポップアップでブランチ名の上にマウスを置き、左側に表示される星の輪郭をクリックします。
または、お気に入りとしてマークするブランチを選択し、Space を押します。
Git ツールウィンドウのブランチペインでブランチを選択して、ツールバーの をクリックすることもできます。
グループブランチ
ブランチポップアップでは、IntelliJ IDEA はブランチを 3 つのノードに保持します。
最近のブランチノードには、最近チェックアウトされたブランチが最大 5 つ表示されます。
ローカルブランチノードには、すべてのローカルブランチがリストされます。
リモートブランチノードには、最新のフェッチ後に使用可能なすべてのリモートブランチが表示されます。
また、IntelliJ IDEA は、ブランチをプレフィックスごとに自動的にグループ化し、展開可能なリストに保存します。
ブランチをグループ化するには、ブランチの名前のプレフィックスをスラッシュ / で区切る必要があります。例: jd/2023.1
ブランチをプレフィックスごとにグループ化したくない場合は、ブランチポップアップの右上隅にある をクリックし、接頭辞でグループ化オプションの選択を解除して無効にします。
ブランチをチェックする (git-checkout)
他の誰かが作成したブランチで作業したい場合は、それをチェックアウトして、そのブランチのローカルコピーを作成する必要があります。
リモートブランチの完全なリストがあることを確認するには、ブランチポップアップで をクリックします。
ブランチを新しいローカルブランチとしてチェックアウトする
ブランチポップアップまたは Git ツールウィンドウのブランチペインで、ローカルにリモートブランチからチェックアウトするブランチを選択するか、プロジェクトに複数のルートと同期ブランチコントロールが有効になっている場合は共通リモートブランチを選択し、無効になっている場合はリポジトリ | リモートブランチから選択します。
アクションのリストからチェックアウトを選択します。
新しいローカルブランチが作成され、チェックアウトされ、元のリモートブランチを追跡するように設定されます。
チェックアウトしたいリモートブランチと同じ名前のローカルブランチがすでにある場合があります。状況に応じて、チェックアウトプロセスを完了する方法は次のとおりです。
コミットが失われず、ローカルブランチがすでにリモートを追跡している場合、IntelliJ IDEA はローカルブランチを リモートブランチに自動的にリセットしてからチェックアウトします。
ローカルブランチに、リセットのために失われる可能性のあるコミットが含まれている場合、IntelliJ IDEA は次のことを提案します。
ローカルコミットのドロップ : IntelliJ IDEA は、ローカルコミットをドロップし、ローカルブランチをリセットし、追跡を変更します。
リモートへのリベース : IntelliJ IDEA は、ローカルブランチを リモートブランチにリベースし、ローカルコミットを保持し、ローカルブランチをリセットし、追跡を変更します。
ブランチを切り替える
マルチタスクを行う場合、ブランチ間を行き来して、無関係な変更をコミットする必要があることがよくあります。
ブランチポップアップまたは Git ツールウィンドウのブランチペインで、ローカルブランチに切り替えるブランチを選択し、使用可能な操作のリストからチェックアウトを選択します。
マルチリポジトリプロジェクトの場合、ブランチはリポジトリごとに自動的にグループ化されます。必要なブランチをチェックアウトするには、ブランチポップアップで、最初にリポジトリを選択します。
次に起こることは、まだコミットしていないローカルの変更と、チェックアウトしようとしているブランチとの間に矛盾があるかどうかによって異なります。
作業ツリーがクリーンである (つまり、コミットされていない変更がない) 場合、またはローカルの変更が指定されたブランチと競合しない場合、このブランチはチェックアウトされます (IntelliJ IDEA ウィンドウの右下隅に通知がポップアップ表示されます)。
ローカルの変更がチェックアウトによって上書きされる場合、IntelliJ IDEA は、選択されたブランチをチェックアウトできないファイルのリストを表示し、強制チェックアウトとスマートチェックアウトの選択を提案します。
強制チェックアウトをクリックすると、コミットされていないローカルの変更が上書きされ、失われます。
スマートチェックアウトをクリックすると、IntelliJ IDEA はコミットされていない変更をシェルブし、選択したブランチをチェックアウトして、変更をアンシェルブします。アンシェルブ操作中に競合が発生した場合は、変更をマージするように求められます。詳細については、「競合の解決」を参照してください。
ブランチの比較
ブランチを現在のブランチと比較する
ブランチが現在のブランチからどのように分岐しているかを確認したい場合は、比較できます。
ブランチポップアップまたは Git ツールウィンドウのブランチペインから、現在のブランチと比較するブランチを選択し、現在のブランチと比較を選択します。
新しいタブが Git ツールウィンドウに追加され、選択したブランチに存在し、現在のブランチには存在しないすべてのコミットが一覧表示されます。
ブランチを入れ替えリンクをクリックして、他のブランチと比較するベースと見なされるブランチを変更できます。
2 つのブランチで異なるすべてのファイルのリストを表示するには、Control+A をクリックします。変更されたファイルペインは、相違点を含むすべてのファイルをリストします。
ブランチと作業ツリーを比較する
ブランチを現在のブランチと比較する以外に、現在のブランチのローカル状態と比較することができます。これは、コミットされていない変更がローカルにある場合に役立ちます。
ブランチポップアップまたは Git ツールウィンドウのブランチペインから、ローカルの作業ツリーと比較するブランチを選択し、作業ツリーとの差分を表示を選択します。
開いた変更ツールウィンドウには、現在チェックアウトされているブランチと比較して、選択したブランチで異なるすべてのファイルのリストが表示されます。
選択したブランチに存在し、現在のブランチにないファイルは、灰色でマークされます。
現在のブランチに存在するが、選択したブランチにないファイルは、緑色でマークされます。
選択したブランチと現在のブランチの違いを含むファイルは、青色でマークされています。
ブランチを入れ替えリンクをクリックして、他のブランチと比較するベースと見なされるブランチを変更できます。
特定のファイル内の違いを確認するには、ファイルを選択してツールバーの をクリックするか、Control+D を押します。
ファイルの内容全体を現在のブランチに適用するには、 をクリックします。詳細については、個別のファイルを適用するを参照してください。
このビデオを見て、変更をブランチと比較する方法をよりよく理解してください。
ブランチを削除
機能ブランチからの変更を開発のメインラインに統合した後、不要になったブランチを削除できます。
今後の作業に使用するブランチを確認してください。
ブランチポップアップまたは Git ツールウィンドウのブランチペインで、削除するブランチを右クリックし、削除を選択します。
ブランチを削除すると、削除されたブランチを元に戻すことができる通知が右下隅に表示されます。
ブランチに、上流のブランチまたは現在のブランチにまだマージされていないコミットが含まれている場合でも、すぐに削除されます(git branch --D
または git branch --delete --force
コマンドと同等)が、通知には、マージされていないコミットを表示できるリンクも含まれます。
削除されたブランチがリモートブランチを追跡していた場合、この通知にはリモートブランチを削除するリンクもあります。
同期ブランチ制御を構成する
マルチルートリポジトリがある場合は、単一のリポジトリであるかのように、すべてのルートですべてのブランチ操作 (チェックアウト、マージ、削除など) を同時に実行するように IntelliJ IDEA を構成できます。
Control+Alt+S を押して IDE 設定を開き、
を選択します。すべてのルートに対してブランチ操作を実行するオプションを選択します(このオプションは、プロジェクトに複数のルートがある場合にのみ使用できることに注意してください)。
少なくとも 1 つのリポジトリで操作が失敗した場合、IntelliJ IDEA は、成功したリポジトリでこの操作をロールバックすることを提案することで、ブランチの分岐を防ぎます。
関連ページ:
Git を使用して複数のフィーチャーを同時に処理する
場合によっては、未完成のものを使って別のタスクに切り替えてから、それらに戻る必要があります。IntelliJ IDEA はあなたの作業を失うことなくいくつかの異なる機能に便利に取り組むためのいくつかの方法を提供します: 保留中の変更はスタッシュまたはシェルブできます。スタッシュの変更は、シェルブに非常に似ています。唯一の違いは、パッチの生成方法と適用方法にあります。スタッシュは Git によって生成され、IntelliJ IDEA の内部または外部から適用できます。変更がシェルブされたパッチは I...
ログタブ
このタブは、バージョン管理に Git または Mercurial を使用している場合にのみ使用できます。このタブには、すべてのローカルおよびリモートブランチ、およびすべてのブランチ、特定のブランチまたはリポジトリにコミットされたすべての変更が表示されます。タブには次のペインが含まれます。ブランチペインは左側にあり、すべてのローカルおよびリモートブランチを表示します。このペインから、ブランチを切り替えたり、新しいブランチを作成したり、不要なものを削除したり、ブランチでログをフィルター処理したりできます。コ...
リモート Git リポジトリと同期する (フェッチ、プル、更新)
変更をアップストリームにプッシュして作業結果を共有する前に、リモートリポジトリと同期して、プロジェクトのローカルコピーが最新であることを確認する必要があります。これを行うには、次のいずれかの方法があります: 変更のフェッチ、変更のプル、プロジェクトの更新 Git ブランチポップアップは、ブランチにまだフェッチされていない受信コミットがあるかどうかを示します。変更のフェッチ:アップストリームから変更をフェッチすると、リモートリポジトリと最後に同期してから行われたコミットからのすべての新しいデータがロー...
Git の競合を解決する
チームで作業しているときに、現在作業中のファイルに誰かが変更をプッシュするという状況に遭遇する可能性があります。これらの変更が重複しない場合(つまり、異なるコード行に変更が加えられた場合)、競合するファイルは自動的にマージされます。しかし、同じ行が影響を受けた場合、Git は無作為に一方を他方を選ぶことはできず、衝突を解決するように求めます。Git では、プル、マージ、リベース、チェリーピック、変更のスタッシュ解除、またはパッチの適用のいずれかの操作を実行しようとすると、競合が発生する可能性があ...
タスクとコンテキストを管理する
プロジェクトで作業する場合は、完了する必要のある小さな作業で作業を整理できます。これらは、自分で設定したタスクです。IntelliJ IDEA では、大きな作業を小さなタスクに分割し、変更リストに関連付けることができます。これらは、課題追跡システムからのタスクである可能性もあります。例: IntelliJ IDEA から直接割り当てられたタスクやバグを処理できます。これを可能にするには、IDE とトラッカーアカウントを接続します。課題追跡との統合を構成する:IntelliJ IDEA は次のも...
Git ブランチから別の Git へ変更を適用する
Git では、あるブランチから別のブランチへの変更を統合するいくつかの方法があります。ブランチのマージ、ブランチのリベース、チェリーピックの個別コミット、コミットから個別の変更を適用する、特定のファイルをブランチに適用する、ブランチのマージ:特定のタスクで機能する機能ブランチを作成し、機能を完了してテストした後、作業の結果をメインコードベースに統合するとします。これを行う最も一般的な方法は、ブランチをマスターにマージすることです。機能ブランチで作業をしている間、チームメイトが master に...