Gitのcherry-pickコマンドとはどんな事をするのか

はじめに

この記事では、「Gitのcherry-pickコマンドの概要」について書いています。

Gitにはたくさんのコマンドがあり、また自分は普段TortoiseGitを使っていて全然コマンドを覚えてないので、自分でコマンドを試しながら学んでいます。

その中で、cherry-pickというコマンドがイマイチ何をするものなのか理解ができていないので調べた内容をまとめて記事にしました。

自分に向けた備忘録の意味もありますが、「Gitのcherry-pickコマンドがよく分からない」な人の一助になれば嬉しいです。

cherry-pickコマンドは何をするコマンドなのか

一言で説明すると、別のブランチで行った特定のコミットを取り込むことができるコマンドです。

例えば、今開発中のリポジトリが以下のように進んでいるとします。

gitGraph commit id: "FIRST" branch feature_1 branch feature_2 commit id: "SECOND" checkout feature_1 commit id: "THIRD" checkout feature_1 commit id: "FOURTH" checkout feature_2 commit id: "FIFTH"

ここで、feature_1のブランチで、"feature_2のブランチのFIFTHと書かれている点のコミット"をfeature_1でも取り込む必要が出てきとします。

SECONDのコミットは必要ありません。あくまでFIFTHと書かれた点のコミットだけを取り込みたいのです。

こういう時に活躍するのがcherry-pickコマンドです。

mergeコマンドとの違い

似たようなことを行うものとしてmergeコマンドがあります。これとの違いは何でしょうか。

それは、mergeコマンドはブランチの全てのコマンドを取り込んでしまうという点です。

上で見せた例ですと、feature_1に対してfeature_2をマージしてしまうとSECONDFIFTHのコミットの両方がfeature_1に取り込まれてしまいます。しかしながら今必要としているのはFIFTHの点のコミットだけなんですね!

指定したコミットだけを取り込む。これがcherry-pickの特徴です。

ちなみに

英語のcherry pickとは自分の気に入ったものだけをつまみ食いするという意味らしいです。

おわりに

「Gitのcherry-pickコマンドの概要」について解説しました。

cherry-pickとはどんなことをするコマンドなのか、mergeコマンドとはどのような違いがあるのか、お分かりいただけたでしょうか。

さいごに、記事を書く上で参考にしたサイトのリンクを以下に掲載します。合わせて読んでいただくと良いかと思います。

https://www.r-staffing.co.jp/engineer/entry/20200327_1

https://www.sejuku.net/blog/71544