PyCharm 2026.1 Help

マージ、リベース、チェリーピックで変更を適用

Git では、あるブランチから別のブランチへの変更を統合するいくつかの方法があります:

ブランチのマージ

特定のタスクを実行するために機能ブランチを作成し、機能を完了してテストした後、作業の結果 (F1F2F3) をメインコードベースに統合するとします。

mainfeatureC1C2C3F1F2F3

ブランチを mainマージするのが、これを行う最も一般的な方法です。

フィーチャブランチで作業している間に、チームメイトが引き続き作業 (C4C5) を main にコミットすることはよくあります。

mainfeatureC1C2C3F1F2F3C4C5

フィーチャーブランチを mainマージすると、フィーチャーブランチの変更がターゲットブランチの HEAD に統合されます。

mainfeatureC1C2C3F1F2F3C4C5

Git creates a new commit that is referred to as a merge commit that results from combining the changes from your feature branch and main from the point where the two branches diverged.

マージの主な利点は、 main コードベースにマージされたコミットが元のハッシュと作成者を保持し、1 つの機能の一部であるすべてのコミットをグループ化できるため、完全な追跡可能性が確保されることです。

このワークフローは、既存のブランチはまったく変更されないため、 main コードベースへの変更のコミットに プル リクエストまたはマージリクエスト 、あるいは階層的な承認手順が含まれるプロジェクトに適しています。

このアプローチの主な欠点は、変更を組み込む必要があるたびに余計なマージコミットが作成され、プロジェクト履歴が著しく汚れて読みにくくなることです。

ブランチのマージ

  1. ブランチ ポップアップ(メインメニュー Git | ブランチ )または Git​​サポート ツールウィンドウの ブランチ ペインで、変更を統合するターゲットブランチを選択し、コンテキストメニューから チェックアウト を選択してそのブランチに切り替えます。

  2. 次のいずれかを実行します:

    • マージのオプションを指定する必要がない場合は、現在のブランチにマージするブランチを選択し、サブメニューから <branch_name> を <target_branch> にマージする を選択します。

      ブランチのマージ
    • マージオプションを指定する必要がある場合は、メインメニューから Git | マージ を選択して マージします ダイアログを開きます。

      マージダイアログ

      現在のブランチにマージするブランチを選択し、 オプションを変更 をクリックして、以下から選択します。

      • --no-ff: マージが早送りとして解決できたとしても、マージコミットはすべての場合に作成されます。

      • --ff-only: マージは、早送りが可能な場合にのみ解決されます。

      • --squash: すべてのプルされた変更を含む単一のコミットは、現在のブランチ上に作成されます。

      • -m: マージコミットのメッセージを編集できます。

      • --no-commit: マージは実行されますが、マージコミットは作成されないため、コミットする前にマージの結果をインスペクションできます。

      • --no-verify: 通常はデフォルトで実行されるマージ前フックとコミットメッセージフックをバイパスしながらマージを実行します。

      • --allow-unrelated-histories: 共通の祖先を持たない履歴のマージを拒否する安全ルールを無視して、マージを実行します。

    マージします をクリックしてください。

作業ツリーがクリーンであり(つまり、コミットされていない変更がない)、機能ブランチとターゲットブランチの間で競合が発生しない場合、Git は 2 つのブランチをマージし、マージコミットは Git​​サポート ツールウィンドウ Alt+9ログ タブに表示されます。

コミットをマージする

ブランチとターゲットのブランチの間で競合が発生した場合は、解決を促すメッセージが表示されます(競合の解決を参照)。 マージ後に未解決の競合が残っている場合は、 コミット ツールウィンドウ(Alt+0 )の対応する変更リストに マージの競合 ノードが表示され、解決するためのリンクが表示されます。

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

ブランチのリベース (git-rebase)

ブランチを別のブランチに rebase するとき、最初のブランチからのコミットを 2 番目のブランチの HEAD コミット上に適用します。

特定のタスクに取り組むためにフィーチャーブランチを作成し、そのブランチ (F1F2F3) に複数のコミットを行ったとします。

mainfeatureC1C2C3F1F2F3

ブランチで開発している間、チームメイトは作業 (C4C5) を main にコミットし続けます。

mainfeatureC1C2C3F1F2F3C4C5

チームメイト(C4C5 )が機能ブランチに加えた変更を統合するには、ブランチを mainリベースします。 これにより、 main の現在の HEAD コミット上にコミットが適用されます。

mainfeatureC1C2C3C4C5F1'F2'F3'

リベースの主な利点は、他の人が読みやすく理解しやすいクリーンなプロジェクト履歴が得られることです。 ログには、 merge 操作によって生成された不要なマージコミットが含まれず、移動や検索が簡単な線形履歴が得られます。

ただし、このワークフローを採用することを決定する場合、 rebase は元の機能ブランチ (F1 ではなく F1') の各コミットに対して新しいコミットを作成するため、プロジェクト履歴を書き換え、ハッシュが異なり、トレーサビリティが妨げられることに留意する必要があります。

ブランチを別のブランチ上にリベースする

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

    Git リベースダイアログ
  2. リストから、現在のブランチをリベースするターゲットブランチを選択します:

    Git リベースでターゲットブランチを選択するダイアログ
  3. ブランチ全体をリベースするのではなく、特定のコミットからソースブランチをリベースする必要がある場合は、 オプションを変更 をクリックして --onto を選択します。

    ソースブランチフィールドに、現在のブランチを新しいベースに適用するコミットのハッシュを入力します:

    --onto でコミットハッシュを指定する
  4. リベースするブランチが現在チェックアウトされていない場合は、 オプションを変更別のリベース対象ブランチを選択する 順にクリックし、表示されるリストからブランチを選択します。

    リベースするブランチを選択する

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

  5. 特定のケースに応じて、 オプションを変更 リストから他のオプションを選択します。

    • --rebase-merges: リベースされるコミット内のブランチ構造を保持します。

      これらのマージコミット内の解決済みのマージ競合または手動修正は、手動で解決または再適用する必要があることに注意してください。

    • --keep-empty: 親から何も変更されていないコミットである空のコミットを保持します。

    • --root: ブランチで到達可能なすべてのコミットをリベースします。

    • --update-refs: リベース中のコミットを指すブランチを自動的に強制更新します。

    • --autosquash: fixup または squash としてマークされたコミットを自動的に squash します。

  6. リベース をクリックしてください。

リベースのオプションを指定する必要がない場合は、リベースダイアログを呼び出さずにリベースを開始できます。 ブランチ ポップアップまたは Git ツールウィンドウの ブランチペインでブランチを選択し、次のいずれかのアクションを選択します。

リベースオプション
  • <current_branch_name> にチェックアウトしてリベースする (リモートとローカルブランチの両方)を使用して、選択したブランチをチェックアウトし、現在チェックアウトされているブランチ上にリベースします。 リモートブランチがローカルに存在しない場合、PyCharm は追跡されたローカルブランチをサイレントに作成し、チェックアウトしてリベースします。

  • <current_branch_name> を <selected_branch_name> にリベースする (リモートとローカルブランチの両方)は、選択したものの上に現在チェックアウトされているブランチをリベースします。

  • リベースを使用して <current_branch_name> にプルする (リモートブランチの場合)は、選択したブランチから変更を フェッチし、これらの変更に基づいて現在のブランチをリベースします。

このビデオを見て、リベース操作がどのように実行できるかを理解してください:

対話的なリベースを実行して Git 履歴を編集する

PyCharm で Git を統合すると、 対話型リベースを行うことで、履歴を線形かつ意味のあるものに編集できます。 これにより、機能ブランチから別のブランチに変更を統合する前に、個々のコミットを変更したり、コミットの順序を変更したり、コミットを 1 つにまとめたり、不要な変更を含むコミットをスキップしたりして、コミットの履歴をクリーンアップすることができます。

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

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

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

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

    ブランチでログをフィルター
  3. 編集する一連のコミットの中で最も古いコミットを選択し、右クリックして ここから対話的にリベース を選択します。

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

    対話式リベースダイアログ

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

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

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

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

    理由を特定するには、コンテキストメニューのアクションにカーソルを合わせ、ステータスバーでメッセージを確認してください:

    ステータスバーメッセージ
  4. ブランチ履歴に対して次の変更を実行できます:

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

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

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

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

      リベースステータス通知

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

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

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

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

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

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

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

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

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

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

    対話的なリベースグラフ
  5. リベース開始 をクリックしてください。

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

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

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

    Git リベースダイアログ
  2. オプションを変更 をクリックし、 --interactive を選択します。

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

    Git リベースでターゲットブランチを選択するダイアログ
  4. ブランチ全体をリベースするのではなく、特定のコミットからソースブランチをリベースする必要がある場合は、 オプションを変更 をクリックして --onto を選択します。

    ソースブランチフィールドに、現在のブランチを新しいベースに適用するコミットのハッシュを入力します:

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

    リベースするブランチを選択する

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

  6. 特定のケースに応じて、 オプションを変更 リストから他のオプションを選択します。

    • --rebase-merges: リベースされるコミット内のブランチ構造を保持します。

      これらのマージコミット内の解決済みのマージ競合または手動修正は、手動で解決または再適用する必要があることに注意してください。

    • --keep-empty: 親から何も変更されていないコミットである空のコミットを保持します。

    • --root: ブランチで到達可能なすべてのコミットをリベースします。

    • --update-refs: リベース中のコミットを指すブランチを自動的に強制更新します。

    • --autosquash: fixup または squash としてマークされたコミットを自動的に squash します。

  7. リベース をクリックしてください。

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

    対話式リベースダイアログ
  8. ブランチ履歴に対して次の変更を実行できます:

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

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

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

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

      リベースステータス通知

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

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

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

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

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

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

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

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

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

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

    対話的なリベースグラフ
  9. リベース開始 をクリックしてください。

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

場合によっては、ブランチ全体をリベースまたはマージするのではなく、別のブランチに単一のコミットを適用するだけで済むことがあります。 これは、たとえば、ブランチという機能で作業していて、2 つのブランチが分岐した後にコミットされた main のホットフィックスを統合したい場合などに便利です。 あるいは、以前のリリースのブランチに修正をバックポートしたい場合もあります。 これは、 チェリーピック アクションを使用することで可能です。

ステータスバーには、チェリーピック操作の現在の状態が表示されます。 チェリーピックプロセスは、以下の操作で管理できます。

  • 中止: 進行中のチェリーピックをキャンセルするには、VCS ウィジェットで Abort Cherry-Pick を選択するか、ステータスバーの Abort Cherry-Pick をクリックします。

  • 続行: 進行中のチェリーピックが一時停止された場合 (たとえば、競合を解決するため)、VCS ウィジェットで チェリーピックを続行 を選択するか、ステータスバーの チェリーピックを続行 をクリックしてプロセスを完了します。

チェリーピック操作状況

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

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

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

  3. チェリーピックしたい変更を含むコミットを見つけます。

    ブランチ、ユーザー、日付でコミットをフィルタリングできます。 ツールバーの ビューオプション をクリックし、 ハイライト | 未選択のコミット オプションを選択して、現在のブランチにすでに適用されているコミットをグレー表示することもできます。 コミットハッシュがわかっている場合、またはタグ付きコミットを探している場合は、 ハッシュ / ブランチ / タグに移動 アクションを使用することもできます(Git​​サポート ツールウィンドウ Alt+9ログ タブで Ctrl+F を押すか、ツールバーの 検索 をクリックします)。

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

  5. ツールバーの チェリーピック Cherry-Pick ボタン をクリックします。 PyCharm はターゲットブランチに変更を適用してコミットします。

  6. 競合が発生してチェリーピックが失敗した場合、選択された変更は コミット ツールウィンドウ(Alt+0 )に表示される 変更 領域に表示されます。 これらの変更を確認し、必要に応じて後でコミットできます。

    チェリーピックが失敗した場合に PyCharm で変更リストを自動作成したい場合は、 設定 | バージョン管理 | 変更リスト で該当設定をオンにしてください。

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

次のビデオは、チェリーピックがどのように動作するかを理解できます:

個別の変更を適用する

あるファイルに変更を加え、それを別のブランチに適用したいが、その変更が他の変更されたファイルと一緒にコミットされてしまったとします。 PyCharm では、コミット全体をチェリーピックする代わりに、変更リストに個別の変更をすぐにコミットせずに適用できます。

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

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

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

    ブランチ、ユーザー、日付でコミットをフィルタリングできます。 ツールバーの 目 アイコン をクリックし、 ハイライト | 未選択のコミット オプションを選択して、現在のブランチにすでに適用されているコミットをグレー表示することもできます。 コミットハッシュがわかっている場合、またはタグ付きコミットを探している場合は、 ハッシュ / ブランチ / タグに移動 アクションを使用することもできます(Git​​サポート ツールウィンドウ Alt+9ログ タブで Ctrl+F を押すか、ツールバーの 検索 をクリックします)。

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

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

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

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

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

  1. 変更が適用されるブランチに 切り替えます

  2. ブランチ ポップアップ(メインメニュー Git | ブランチ )または Git​​サポート ツールウィンドウの ブランチ ペインで、適用するファイルを含むブランチを選択し、コンテキストメニューから 作業ツリーとの差分を表示 を選択します。

    開いた 変更 ツールウィンドウには、現在チェックアウトされているブランチと比較して、選択したブランチで異なるすべてのファイルのリストが表示されます。

    • 選択したブランチに存在し、現在のブランチには存在しないファイルは、灰色でマークされます。

    • 現在のブランチに存在するが、選択したブランチにないファイルは、緑色でマークされます。

    • 選択したブランチと現在のブランチの違いを含むファイルは、青色でマークされています。

    ブランチを入れ替え リンクをクリックして、他のブランチと比較するベースと見なされるブランチを変更できます。

  3. 現在のブランチに適用するファイルを選択し、コンテキストメニューから ブランチから取得 を選択するか、ツールバーの ブランチから取得 をクリックします。

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

2026 年 6 月 1 日