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から始めてもいい気がする。
