Git перебазировать и автоматически обновить указатель ветки? - PullRequest
0 голосов
/ 08 мая 2020

У меня есть набор таких веток:

            * 444ddd - somefeature3
           /
          * 333ccc - somefeature2
         /
        * 222bbb - somefeature1
       /
------* 111aaa - master

Если бы я был в одной ветке (скажем, somefeature3 без somefeature2 или somefeature1 существующих), я мог бы обновить все моих коммитов, выполнив git rebase -i 111aaa. Другими словами, я мог go от этого:

            * 444ddd - somefeature3
           /
          * 333ccc
         /
        * 222bbb
       /
------* 111aaa - master

... до этого:

            * 444eee - somefeature3
           /
          * 333ddd
         /
        * 222ccc
       /
------* 111aaa - master

В частности, commit 222bbb был заменен на 222ccc, 333ccc был заменен на 333ddd, а 444ddd был заменен на 444eee.

Однако, если мне нужны указатели веток somefeature2 и somefeature1, они не будут обновляться в этом сценарии. Я бы сделал go из этого:

            * 444ddd - somefeature3
           /
          * 333ccc - somefeature2
         /
        * 222bbb - somefeature1
       /
------* 111aaa - master

... до этого:

            * 444eee - somefeature3
           /
          * 333ddd        * 333ccc - somefeature2
         /               /
        * 222ccc        * 222bbb - somefeature1
       /               /
------* --------------*
       111aaa - master

Вместо этого я хочу, чтобы конечное состояние выглядело так, с указатели ветвей somefeature2 и somefeature1 обновляются вместе с somefeature3:

            * 444eee - somefeature3
           /
          * 333ddd - somefeature2
         /
        * 222ccc - somefeature1
       /
------* 111aaa - master

Есть ли способ, чтобы Git автоматически обновлял указатели веток для somefeature1 и somefeature2 как часть git rebase -i, создавая это конечное состояние?

(мета: это похоже на этот вопрос , но идет дальше, спрашивая, возможно ли, чтобы Git делал соответствующий foo автоматически)

1 Ответ

1 голос
/ 08 мая 2020

Самое близкое, что я могу сделать, это использовать интерактивную перебазировку и добавить exec git branch -f branchname после выбора для этих советов. Если это становится для вас обычным делом, вы находитесь на территории сценариев, используйте свой любимый редактор для запуска git for-each-ref --points-at в каждой строке с форматом, который выводит обновления.

...