tips chips

日々の作業で出てきた技術メモの切れ端を置いておくページ

特定のコミットを抜き出して一気にcherry-pickする

やっぱり困った時最後に助けられるのはCLI操作だなと思わされる。

git logからある条件を元に抜き出したコミットを元に新しいブランチにcherry-pickしたい、みたいなケースが発生したので調べながらやったログ

$ git log origin/feature/hoge..feature/fuga --author="Kota Nonaka" --no-merges --reverse --pretty="%H"

まずはdiffを出す。今回は特定のブランチ間のdiffのうち自分がやったものだけを取り出して別のブランチにコミットしたかったので上記のようなコマンドになった。

origin/feature/hoge と feature/fuga の間のdiffをとって、そのコミットのうちコミットのauthorが Kota Nonakaであるものを取り出す。

--reverseを指定するとlogが逆順になる。後ほど古い順でcherry-pickするために先頭が古いコミットであって欲しかったため指定している。

--pretty="%H"はコミットハッシュだけを出力するオプション。

そして上記のコマンドで得たコミットハッシュを順番にcherry-pickしていけば良い。自分はxargsに渡して処理した。

git log origin/feature/hashtag_search_popular_v2..feature/recommend_pay_note_extend_target_category --author="Kota Nonaka" --no-merges --reverse --pretty="%H" | xargs git cherry-pick