【Git】派生元ブランチの変更
この記事ではGitの派生元ブランチ(親ブランチ)の特定と変更方法を紹介します。
間違った親ブランチからブランチを作成してしまいコミットもしてしまった時などに有効です。
派生元ブランチの特定方法
$ git show-branch | grep "*" | grep -v "$(git rev-parse --abbrev-ref HEAD)" | head -n 1 | awk -F'[]~^[]' '{print $2}'
grep "*"
:*がついてる行のみ表示grep -v "$(git rev-parse --abbrev-ref HEAD)"
:カレントブランチを除外head -n 1
:1行目を表示awk -F'[]~^[]' '{print $2}’
:ブランチ名のみ表示
派生元ブランチの変更方法
方法1. git rebase --onto
H---I---J topicB / E---F---G topicA / A---B---C---D main
↓
$ git rebase --onto main topicA topicB
↓
H'--I'--J' topicB / | E---F---G topicA |/ A---B---C---D main
git rebase --onto <変更後の親ブランチ> <現在の親ブランチ> <移動するブランチ>
- rebaseによりコミットが改変されているため、リモートへのpushには
git push -f
が必要
方法2. git cherry-pick
$ git checkout -b topicB-new master $ git cherry-pick <コミットid>
- 新しいブランチを作り、欲しいコミットだけを
git cherry-pick
で移動させる - 適用させたいコミット数が少ない場合に有効
【参考】
- 派生元ブランチの特定方法
- 派生元ブランチの変更方法