Introduction
特定の機能の追加で、膨大な量の修正をコンポーネント単位に分解してプルリクエストを投げて欲しい、と言う要望は結構ある。
サービス側とUI側とか。
テストも含めて単一のメンバーまたは組織が行い、それを本流にマージする際に起こりうる。
Resolution
開発側のコミットが一つになっているなら、分割。
開発中、適切なコンポーネント単位でコミットが分かれているなら、そのまま。
cherry-pickするなりしてプルリクエストを投げるなりすれば良い。
だけど、後者のようなパターンはまれ。
なので、想定は、開発したfeatureブランチをdevelopブランチにsquashで纏めて一つのマージにしてしまった場合。
この一つのコミットを分割して、プルリクエストを投げ直す。
なお、最新のコミットが分割対象と想定。
01. rebase
分割したいコミットのハッシュを確認。
1 | git checkout <対象のブランチ> |
その後、エディタが立ち上がるので、pick
を edit
に変更して確定。
Windowsの場合は ~
は二つ必要。
02. reset
この状態だとコミット自体は終わっているので、リセットして、未コミット状態に戻す。
1 | git reset HEAD~ |
Windowsの場合は ~
は二つ必要。
03. コミット
あとは、コンポーネント単位にファイルを分割してコミット。
1 | git add X |
04. 確定
1 | git rebase --continue |
まぁ、単純にresetから始めてもいい気がする。