Git の異なるブランチからの変更を選択的にマージする

John Wachira 2024年2月15日
Git の異なるブランチからの変更を選択的にマージする

この記事では、あるブランチから別のブランチへの特定の変更のマージについて説明します。 ご存じのとおり、ブランチをマージするとき、Git はすべてのファイルを例外なくマージします。

ブランチにいくつかのコミットがあり、いくつかを選択して別のブランチにマージする必要があるというシナリオに遭遇する場合があります。 これを回避する方法を見てみましょう。

Git の異なるブランチからの変更を選択的にマージする

理解を深めるために、あるブランチから別のブランチにいくつかのコミットをマージする必要があるシナリオをシミュレートします。 これを回避する方法を次に示します。

例:

私たちのローカル リポジトリ Delftscopetech には、次の 2つのブランチがあります。

  1. Dev_Branch
  2. メイン

物事を可能な限り実用的にするために、修正が必要なバグがプロジェクトで見つかったと仮定します。 バグを修正した後、Main ブランチではなく Dev_Branch ブランチでチェックアウトされていることに気付きました。

通常のマージはプロジェクトを壊します。 私たちは何をしますか?

このようなシナリオでは、最初に git log コマンドを実行して Dev_Branch のコミット履歴を表示します。 必要な変更を含むブランチにいることを確認してください。

$ git checkout Dev_Branch

コミット履歴は次のとおりです。

$ git log --oneline

Dev_Branch のコミット履歴

次に、Main ブランチにマージするコミットを特定します。 Main ブランチのコミット履歴は次のとおりです。

$ git checkout Main
$ git log --oneline

メインブランチのコミット履歴

Main ブランチに次のコミットがないことがわかります。

  1. edcb8ae 2 回目のバグ修正
  2. cefb7bb 最初のバグ修正

2つのコミットをマージするには、git cherry-pick コマンドを使用して、2つのコミットのコミット ID をフィードします。 マージしたいブランチ、この場合は Main ブランチにチェックアウトされていることを確認してください。

$ git checkout Main

以下に示すように、cherry-pick を実行できるようになりました。

$ git cherry-pick edcb8ae cefb7bb

出力:

Git 選択的マージ出力

マージの競合がない場合は、上記の出力のような結果が得られるはずです。 マージを確認しましょう。

$ git log --oneline

マージの確認

出力は、Git が 2つの新しいコミットを作成したことを示しています。コミット ID は異なりますが、説明は同じです。 以下に示すように、git push コマンドを実行して、ブランチをリモート リポジトリにプッシュできます。

$ git push origin Main

要約すると、git cherry-pick コマンドのおかげで、Git で選択的にマージできます。 必要なのは、マージする変更のコミット ID だけであり、正しいブランチでチェックアウトされていることを確認します。

著者: John Wachira
John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn

関連記事 - Git Commit

関連記事 - Git Merge