🙆

git cherry-pickを使用し、Pull Requestを分割する

2023/12/24に公開

はじめに

大きくなりすぎたPull Requestを分割する方法を学んだのでメモとして残します

結論

分割先のブランチにcheckoutしgit cherry-pick 分割したいコミットのcommitSHAを実行する

具体例

bigブランチにあるhoge.md, fuga.md, piyo.mdの追加の差分をそれぞれhogeブランチ、fugaブランチ、piyoブランチに分割します

分割前のPR

具体的な手順

1. 分割先のブランチにcheckout

git checkout hoge
注意点:分割先のブランチは分割元から派生させてしまうとその分の差分が全て入ってしまうので、それが入っていないブランチから派生させる

2. 分割させたいコミットのcommitSHAを確認

分割元のPRのcommitsタブで確認できます

3. git cherry-pickを実行

分割先ブランチで実行します

hogeブランチで実行
$ git cherry-pick 4cc91c48343e0e1ef9377fefc47c0c2728c02bcc
[hoge_branch e580fbf] add hoge.md
 Date: Sun Dec 24 11:44:22 2023 +0900
 1 file changed, 1 insertion(+)
 create mode 100644 hoge.md

対象コミットの差分が追加されました
fugaブランチ、piyoブランチに対しても同様に1~3を実行します

fugaブランチで実行
$ git checkout fuga
$ git cherry-pick 5fc8d039f0b6d15b6af5a38938e9b6639adea45e
[fuga_branch ea22a3a] add fuga.md
 Date: Sun Dec 24 11:44:29 2023 +0900
 1 file changed, 1 insertion(+)
 create mode 100644 fuga.md
piyoブランチで実行
$ git checkout piyo
$ git cherry-pick ce8799c9d43377d1f15d81abfa5c30985c9d0dag
[piyo_branch 178c3fa] add piyo.md
 Date: Sun Dec 24 11:44:32 2023 +0900
 1 file changed, 1 insertion(+)
 create mode 100644 piyo.md

これでそれぞれの差分を分割したPRが作れました!

最後に

コミットの粒度が雑だと分けられないので、適切な粒度でコミットは必要なのと、
量が多すぎると確認するのも大変なので、分割しなくて済むよう粒度には注意したいです

参考

Discussion