はじめに
現在プログラマとして働かせていただいている会社では、developブランチへのマージや開発環境へのデプロイは全て自動化されています。
しかし、developと開発時に切ったブランチをマージする際にコンフリクトが発生した場合には、仕方なく手動でマージを行います。
ここでのブランチの切り方によっては、developに存在するが、開発用に切ったブランチに存在しないファイル等があったりもします。
こうなると、マージする際に余計な差分が出てしまうことになります。(後で詳しく解説します)
つまり、差分(コミット)を選んでマージしなければなりません。
そんな時に使えるのが、今回紹介するcherry-pickです。
名前が可愛くて好きです。
しかも私が今携わっているプロジェクトではたくさん使います。
独学でgitを勉強した際には名前すら聞いたことがなかったので、復習がてら紹介します!
状況解説
ブランチの状況を解説します。
今回は、ラインログインの機能を追加したい!ということにします。
masterからdevelopブランチを切り、そのdevelopブランチからdevelop_LINEブランチを切り、そのdevelop_LINEブランチを
個人の環境へpullし、feature/LINEというブランチを個人用開発ブランチとして切っています(錯乱)。
そして、developとdevelop_LINEというブランチをマージする際に余計な差分が生まれてしまうとします。
この時点でfeature/LINEの差分はdevelop_LINEへ取り込んであるとします。
状況はこんな感じです。
いざ実践
と言っても使い方は簡単です。
まず、develop_LINEブランチへ移動します。
そこで、gitのログを確認しましょう。
すると、コミットIDが出てきますね。
$ git log
commit abcdgehrkd1fhfuqwh359.....
Merge: .......
Author: .......
Date: ...........
調べ終わったらdevelopブランチへ移動します。
ここでcherry-pickの登場!
$ git cherry-pick abcdgehrkd1fhfuqwh359.....
「abcdgehrkd1fhfuqwh359.....」はさっきdevelop_LINEで調べた、developブランチへ取り込みたいコミットIDです。
これでOKです。
あとはpushして終わりです。
ちなみに
developへのpushの権限がない場合は、developブランチからdevelopへマージするようにブランチを切り、同じ操作を行えばOKです!
あと、複数コミットを取り込みたい場合は、
git cherry-pick コミット1 コミット2 ... コミットn
これでできます
終わり
こんな感じで、特定のコミットのみを特定のブランチへ取り込みたい時にcherry-pickは使えます。
名前が可愛いので覚えてあげましょう。