1. ホーム
  2. git

[解決済み] すべての子ブランチを含むブランチのリベース

2023-02-27 15:28:34

質問

次のようなGitリポジトリのトポロジーを持っています。

A-B-F (master)
   \   D (feature-a)
    \ /
     C (feature)
      \
       E (feature-b)

リベースにより feature ブランチをリベースすることで、サブツリー全体(子ブランチを含む)をリベースすることを期待しました。

$ git rebase feature master

A-B-F (master)
     \   D (feature-a)
      \ /
       C (feature)
        \
         E (feature-b)

しかし、実際の結果はこのようになります。

      C' (feature)
     /
A-B-F (master)
   \   D (feature-a)
    \ /
     C
      \
       E (feature-b)

実行することで簡単に手動で修正できることは知っています。

$ git rebase --onto feature C feature-a
$ git rebase --onto feature C feature-b

しかし、すべての子や子孫を含むブランチを自動的にリベースする方法はあるのでしょうか?

どのように解決するのですか?

git branch --format='%(refname:short)' --contains C | \
xargs -n 1 \
git rebase --committer-date-is-author-date --onto F C^