Git の別のブランチからコミットをコピーする

Abdul Jabbar 2022年8月23日
Git の別のブランチからコミットをコピーする

Git で作業しているときに、特定の個別のコミットを 1つのブランチから現在の HEAD ブランチに統合する必要があります。これは、クライアントが製品の変更または報告されたバグを望んでいることが原因である可能性があります。

誤ってコミットしたか、以前のブランチでコミットしたくないので、現在の HEAD ブランチでコミットしたいと考えています。

上記の問題に対する答えは CHERRY PICK です。したがって、次のセクションでは、cherry-pick コマンドについて詳しく説明します。

Git の別のブランチからコミットをコピーする

1つのブランチから特定のコミットを取得し、それを現在の HEAD ブランチにコピーすることを Cherry Picking と呼びます。

Git には、この目的のための特定のコマンド、つまり Git の cherry-pick コマンドがあります。チェリーピッキングのもう 1つの用途は、プルリクエストをマージまたは開発する前に特定の変更を適用することです。

これは、変更を元に戻すのに非常に役立ちます。

この記事では、あるブランチから別のブランチへの特定のコミットのチェリーピッキングについて説明します。

git log コマンドを使用してコミットを表示する

まず、git log を使用して、選択するコミットを調査します。以下は、git log コマンドの分岐結果です。

d23216 - 953222	- 953219 - aa3s36 - 532d37 [master]
           \
            76cada - 66ecb3	- b886a0 [feature]

ここ feature ブランチには、master ブランチにのみ必要な別のブランチからのコミット 66ecb3 があります。

その特定のコミットを選択して、現在のブランチである master ブランチに転送しましょう。その後、そのコミットの変更をプロジェクトに使用できます。

git cherry-pick コマンドを実行してコミットをコピーする

ここで、git cherry-pick が私たちの助けになります。66ecb3 はさくらんぼで、過去にたくさんのプッシュから選んでいきたいと思います。

次のコマンドを実行して、別のブランチから選択してみましょう。

git checkout master
git cherry-pick 66ecb3

上記のコマンドが正常に実行されると、66ecb3 がマスターブランチの新しいコミットとして機能します。

そのため、Git は必要なコミットのコピーを作成し、同じコミットメッセージと変更を master ブランチに追加しました。最終的に、新しい ID を持つ新しいコミットが作成されます。

git reset コマンドを使用して他のブランチをクリーンアップする

feature ブランチに切り替えると、古い場所で同じコミットが表示されます。これは、Git が移動するのではなく、他のブランチにコピーしたためです。

元のものはそのまま残しています。

ここで、クリーニングと元に戻すために、必要なブランチにチェックアウトした後、コマンド git reset を使用します。

$ git checkout Test
Switched to branch 'Test'
$ git reset --hard HEAD~1
HEAD is now at 66ecb3 Change the title and delete the error page
著者: Abdul Jabbar
Abdul Jabbar avatar Abdul Jabbar avatar

Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.

LinkedIn

関連記事 - Git Commit