Git の cherry-pick で複数コミットをまとめて取り込むには?

なんぴともおのが富には満足せざれども、おのが知恵には満足するものなり

レフ・トルストイ「アンナ・カレーニナ」より

こんにちは!日々、不可解なエラーに苦悩する hikaru-kimi です!

Git を使用する際、あるブランチのコミットを他のブランチに取り込みたい場合ってありますよね?そんなときは皆さん大好き cherry-pick を使うと思います

私も学生時代から約10年間、この cherry-pick には随分と助けられてきました。しかし、私はこの cherry-pick についてはコミットを一つずつ取り込むことにしか利用したことがなく、その他のオプションについては知ろうともしてきませんでした

ちょうど先日、cherry-pick で複数コミットをまとめて取り込むことが可能であることを知りました。少し考えればそのような機能がないわけないのですが、ある種の惰性とも言うべきか、そのような使い方を知ろうともしないことにも同時に気づかされました

そこで今回は、cherry-pick の様々な使い方についていくつか紹介していきたいと思います。

cherry-pick の様々な使い方

出典: https://git-scm.com/docs/git-cherry-pick

複数コミットの取り込み

git cherry-pick [取込対象の先頭コミットの1個前のコミットID]..[取込対象の後尾のコミットID]

注意されたいのが、[先頭のコミットID]..[後尾のコミットID] ではない点です。

コミットは作成せず差分のみのコピー

git cherry-pick [コピー対象のコミットID] -n

オプション -n を付与すると、対象コミットの差分を作業ブランチへコピーすることが可能です。 これにより、差分だけ必要でコミットは不必要な場合に対応可能となります。

今日までそして明日から

こうして Git について勉強してみると、新人の頃、Git について試行錯誤をしながら必死に勉強した記憶が蘇ってきました。一方で、ある程度使いこなせるようになるとそれ以上学ぼうとしなくなり、幾年もの歳月が過ぎていきました。

いや、Git だけではありません。当時を振り返ると、未熟さ故の自惚れが生み出した飽くなき知識欲があらゆる行動の原動力となり、血肉に飢えた獣が獲物を乱獲するかの如く様々な知識を吸収するという、刺激的かつ充実感に満ちた日々を過ごしていました。身についたものもあればそうでないものもあります。そもそも、客観的に見れば学ぶ必要性のないものも数多く存在しました。それでも、いや、終着点を意識しないからこそ、茫漠と横たわる時間と若さ故の無限の体力・気力を燃焼することができたのでしょう。

私は今、新卒メンバーのトレーナーも兼務しています。彼らもまた、過ぎし日の私と同様、大海を我が物顔で泳ぐ巨大な鯨が大群をなして機敏に回遊する魚群を大口で飲み込んでしまうが如く、ありとあらゆる知識を飽くことなく吸収していっています。

そんな彼らの、図々しくも清々しいまでの貪欲な姿を見ると、爾来私が失ってしまったものの大切さを痛感せざるを得ません。

惰性は、別れと同じく誰にでも訪れます。これはどのような業種であろうと、あるいは一切の仕事を放棄した人間にも平等に訪れる代物です。この惰性とどう向き合うべきか、これが仕事との向き合い方、ひいては人生との向き合い方に通ずるのではないでしょうか。

ITの技術に限らず、日々の成長とは、重い腰を上げて何かを正面切って学ぼうとすることではなく、日々の惰性から新たなものを見出し、それを螺旋階段を一段一段と確実に登っていくかの如く昇華させていくことなのだと思います。 一周したとしても、二次元座標で見れば位置に変化はありません。しかし、以前の自分よりも高みにいるということは確実に言えるのです。

弊社インゲージでは、常に克己心を持ち成長し続けられるエンジニアを募集しております。 少しでも関心のある方は、以下のリンクより採用にご応募をお願いいたします。