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
ブランチに次のコミットがないことがわかります。
edcb8ae
2 回目のバグ修正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 で特定のコミットを変更する