Информация об изменениях

Сообщение git rebase для ветки и её подветок одной командой от 28.05.2018 11:53

Изменено 28.05.2018 11:58 halo

git rebase для ветки и её подветок одной командой
У нас на проекте существует следующая организация веток в Git-репозитории:

master
\- dev
  \- feature-####
    \- task-####


Время от времени в dev-ветку мы сливаем feature-ветки, работу над которыми считаем завершённой. По такому же принципу в feature-ветки мы сливаем task-ветки. После таких слияний над остальными ветками, которые ещё не объединены со своими родительскими, мы делаем rebase (обязательно с опцией -p) поверх новых изменений в родительской ветке. Это довольно утомительно и затратно по времени, если у ветки, которой нужен rebase, есть ещё дочерние ветки, потому как для каждой из них нужно повторить rebase отдельно, не забыв ни одной ветки.

В принципе, можно реализовать такую стратегию rebase в полуавтоматическом режиме с помощью скриптов, но кажется, что это будет велосипед непроверенного качества. Некоторое время назад у меня получилось написать устанавливаемый в git-директорию Python-скрипт, но в его стабильности и удобности я до конца не уверен + не хочу таскать его с собой, равно как и сам Python. Думаю, можно было бы даже как-то реализовать задумку с помощью более-менее простого скрипта на bash (git-rev-parse, git-rev-list, git-merge-base), и чуть ли не в алиасы его прописать, но и тут не уверен. Например, что делать если одну из дочерних веток не можно объединить автоматически.

Существуют ли уже готовые инструменты для Git, умеющие переносить ветки вместе со всеми их дочерними ветками?
git rebase
git rebase для ветки и её подветок одной командой
У нас на проекте существует следующая организация веток в Git-репозитории:

master
\- dev
  \- feature-####
    \- task-####


Время от времени в dev-ветку мы сливаем feature-ветки, работу над которыми считаем завершённой. По такому же принципу в feature-ветки мы сливаем task-ветки. После таких слияний над остальными ветками, которые ещё не объединены со своими родительскими, мы делаем rebase (обязательно с опцией -p) поверх новых изменений в родительской ветке. Это довольно утомительно и затратно по времени, если у ветки, которой нужен rebase, есть ещё дочерние ветки, потому как для каждой из них нужно повторить rebase отдельно, не забыв ни одной ветки.

В принципе, можно реализовать такую стратегию rebase в полуавтоматическом режиме с помощью скриптов, но кажется, что это будет велосипед непроверенного качества. Некоторое время назад у меня получилось написать устанавливаемый в git-директорию Python-скрипт, но в его стабильности и удобности я до конца не уверен + не хочу таскать его с собой, равно как и сам Python. Думаю, можно было бы даже как-то реализовать задумку с помощью более-менее простого скрипта на bash (git-rev-parse, git-rev-list, git-merge-base), и чуть ли не в алиасы его прописать, но и тут не уверен. Например, что делать если одну из дочерних веток нельзя объединить автоматически.

Существуют ли уже готовые инструменты для Git, умеющие переносить ветки вместе со всеми их дочерними ветками?
git rebase