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