git: cherry-pick список коммитов братьев и сестер - PullRequest
0 голосов
/ 04 сентября 2018

Из-за рабочего процесса моего работодателя я нахожусь в ситуации, когда у меня есть родительский коммит с несколькими дочерними коммитами, причем каждый дочерний коммит является кончиком другой ветви:

      ┌─── b <- branch1
      ├─── c <- branch2
      ├─── d <- branch3
... ─ a ── e <- branch4

Я хочу оказаться в следующем состоянии:

      ┌─── b <- branch1
      ├─── c <- branch2
      ├─── d <- branch3
... ─ a ── e <- branch4
      └─── b'─ c'─ d'─ e' <- branch5

Где загрунтованные коммиты являются клонами. Порядок этих коммитов не важен, и я могу вручную разрешить коммиты, как каждый, при необходимости.

Есть ли способ, которым я могу сделать это автоматически, не создавая новую ветку и не выбирая вручную каждый коммит по одному?

1 Ответ

0 голосов
/ 04 сентября 2018

Список ветвей, содержащих родительский коммит (для поиска дочерних коммитов):

git branch --contains $a | cut -c2-

(cut для удаления звездочки из текущей ветки).

Затем создайте новую ветвь и выберите вишню, которую ребенок совершает:

child_commits=`git branch --contains $a | cut -c2-`
git checkout -b branch5
git cherry-pick $child_commits
...