Git の異なるブランチからの変更を選択的にマージする
この記事では、あるブランチから別のブランチへの特定の変更のマージについて説明します。 ご存じのとおり、ブランチをマージするとき、Git はすべてのファイルを例外なくマージします。
ブランチにいくつかのコミットがあり、いくつかを選択して別のブランチにマージする必要があるというシナリオに遭遇する場合があります。 これを回避する方法を見てみましょう。
Git の異なるブランチからの変更を選択的にマージする
理解を深めるために、あるブランチから別のブランチにいくつかのコミットをマージする必要があるシナリオをシミュレートします。 これを回避する方法を次に示します。
例:
私たちのローカル リポジトリ Delftscopetech には、次の 2つのブランチがあります。
Dev_Branchメイン
物事を可能な限り実用的にするために、修正が必要なバグがプロジェクトで見つかったと仮定します。 バグを修正した後、Main ブランチではなく Dev_Branch ブランチでチェックアウトされていることに気付きました。
通常のマージはプロジェクトを壊します。 私たちは何をしますか?
このようなシナリオでは、最初に git log コマンドを実行して Dev_Branch のコミット履歴を表示します。 必要な変更を含むブランチにいることを確認してください。
$ git checkout Dev_Branch
コミット履歴は次のとおりです。
$ git log --oneline

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

Main ブランチに次のコミットがないことがわかります。
edcb8ae2 回目のバグ修正cefb7bb最初のバグ修正
2つのコミットをマージするには、git cherry-pick コマンドを使用して、2つのコミットのコミット ID をフィードします。 マージしたいブランチ、この場合は Main ブランチにチェックアウトされていることを確認してください。
$ git checkout Main
以下に示すように、cherry-pick を実行できるようになりました。
$ git cherry-pick edcb8ae cefb7bb
出力:

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

出力は、Git が 2つの新しいコミットを作成したことを示しています。コミット ID は異なりますが、説明は同じです。 以下に示すように、git push コマンドを実行して、ブランチをリモート リポジトリにプッシュできます。
$ git push origin Main
要約すると、git cherry-pick コマンドのおかげで、Git で選択的にマージできます。 必要なのは、マージする変更のコミット ID だけであり、正しいブランチでチェックアウトされていることを確認します。
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
- 1つのコマンドで Git Add と Git Commit
- 1つのコマンドで git add、git commit、および git push
- 1つのファイルを除くすべてのファイルをコミット用に追加
- Git で現在のコミットを取得する
- Git で追跡されていないファイルをコミットするさまざまな方法
- Git で特定のコミットを変更する
