Обновлять все (локальные) затронутые разветвленные ветви, когда базовый коммит был изменен - PullRequest
0 голосов
/ 23 октября 2019

Поддержка У меня есть состояние git следующим образом (буквы в [] соответствуют хешу коммита):

base[111] => branch_1[112], adds 1 commit => branch_2[113], adds 1 more commit
       \\
        \\=> branch_3[114], adds 1 totally different commit

Теперь мне нужно обновить base (исправить критический комментарий комментария), поэтому его хэш изменений коммитовот 111 до 222. Все вилки (созданные с помощью git checkout -b) не будут обновлены, и это то, что я хочу исправить. Есть несколько подходов, как сделать это вручную, например, перебазировать или git checkout base && git branch -D branch_1 && git checkout -b branch_1 && git cherry-pick 112, повторить для всех (местных) детей, подвергшихся воздействию. Кажется возможным автоматизировать эту идею, но перед тем, как продолжить, я хотел бы проверить, есть ли что-нибудь уже доступное.

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

1 Ответ

1 голос
/ 23 октября 2019

Находясь на ветке, вы можете git rebase base в основном делать то, что вы написали: переключиться на новый base и повторно применить каждый коммит из ветви, в которой вы находились поверх новой base.

Но так как Git децентрализован, нет способа зациклить это на «каждой» ветви, так как вы не знаете, какие ветви могут существовать в других клонах репо. Если вы знаете, какие ветви вы хотите обновить, вы можете заключить ребаз в простой цикл bash:

for branch_name in branch1 branch2; do
    git rebase base ${branch_name}
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...