LoginSignup
5
2

More than 3 years have passed since last update.

cherry-pick:あるブランチの特定コミットを取り入れたい時に使うコマンド

Posted at

複数の作業ブランチがあり、その中から特定コミットを反映させたい。
しかし、リリースの日程調整上、全てマージするわけにはいかないと言ったこともあり得ます。
このコミットの内容だけ欲しいのになぁという場面で使えます。

cherry-pick

// これを実行するとコミットまで実施される。
git cherry-pick 1fdc89d0

// コミットはせずステージングにあげる
git cherry-pick -n

// 名前を指定する
git cherry-pick -e

// 複数コミットに対して行う(1fdc89d0 ~ 546fc501の間のコミットを対象に)
git cherry-pick 1fdc89d0..546fc501

コミットIDの調べ方

git log

コンフリクトが起きた

コンフリクトの解消をしたら下記で処理を再開できる

git cherry-pick --continue

// やめる時
git cherry-pick --abort

cherry-pickは再使用できない

これはすでにcherry-pickしようとしているコミットIDがブランチに記録されている場合の話。
例えばあるコミットでデグレを起こし、該当箇所をrevertし解消した後Pushしたとする。
この後、再度ローカルブランチで一部コミットだけをcherry-pickして修正を加えるなどができない。そのコミットは履歴に組み込まれているという認識になるため。

こんな場合にも使えるのがcheckout。

checkout branch名 -- file名 で該当ファイルの内容を引っ張る

git checkout branch名 -- file名

これならcode内容をとってくるだけなので、自分で新規コミットを作る形になる。

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2