В Git 2.15 (четвертый квартал 2017 года) git branch
«научился» -c/-C
создавать новую ветку путем копирования существующей.
Смотрите коммит c8b2cec (18 июня 2017 г.), автор Ævar Arnfjörð Bjarmason ( avar
) .
Смотрите коммит 52d59cc , коммит 5463caa (18 июня 2017 г.) от Sahil Dua ( sahildua2305
) .
(Слиты Junio C Hamano - gitster
- в фиксации 3b48045 , 03 окт 2017)
branch
: добавить опцию --copy
( -c
), чтобы идти с --move
( -m
)
Добавьте возможность в --copy
ветку и ее reflog и конфигурацию, это использует тот же базовый механизм, что и опция --move
( -m
), за исключением того, что reflog и конфигурация копируются вместо перемещения.
Это полезно, например , для копирования темы ветки на новую версию, например , work
чтобы work-2
после подачи work
темы в список, сохраняя при этом всех данных отслеживания и другой конфигурацию , которая идет с ветвью, и в отличие от --move
поддержания другого уже представленного филиала вокруг ссылка.
Примечание: при копировании ветки вы остаетесь в своей текущей ветке.
Как объясняет Junio C Hamano:
При создании новой ветви B
путем копирования ветви, A
которая оказывается текущей, она также обновляется, HEAD
чтобы указывать на новую ветку.
Вероятно, это было сделано так, потому что " git branch -c A B
" совмещал свою реализацию с " git branch -m A B
",
Это не соответствует обычному ожиданию.
Если бы я сидел на синем стуле, а кто-то подошел и перекрасил его в красный, я бы согласился сесть на стул, который теперь красный (вместо этого я тоже в порядке, потому что моего любимого синего стула больше нет) ).
Но если кто-то создаст новый красный стул, смоделировав его после синего стула, на котором я сижу, я не ожидаю, что меня загрузят с синего стула и в конечном итоге он сядет на новый красный.
git branch -c A B
. Смотрите мой ответ ниже