Завдяки Git 2.15 (Q4 2017) " git branch
" навчився " -c/-C
" створювати нову гілку, копіюючи існуючу.
Див. Комісію c8b2cec (18 червня 2017 р.) Від Ævar Arnfjörð Bjarmason ( avar
) .
Див. Команду 52d59cc , вчинити 5463caa (18 червня 2017 р.) Від Sahil Dua ( sahildua2305
) .
(Об'єднано Хуніо С Хамано - gitster
- у комітці 3b48045 , 03 жовтня 2017 р.)
branch
: додайте опцію --copy
( -c
), щоб перейти з --move
( -m
)
Додайте можливість до --copy
гілки та її перемикання та конфігурацію, для цього використовується той самий базовий механізм, що й параметр --move
( -m
), за винятком того, що рефлог та конфігурація копіюються замість того, щоб переміщуватись.
Це корисно, наприклад , для копіювання теми гілки на нову версію, наприклад , work
щоб work-2
після подачі work
теми в список, зберігаючи при цьому всіх даних відстеження та іншої конфігурацію , яка йде з гілкою, і в відміну від --move
підтримки іншого вже представленого філії навколо довідник.
Примітка. Коли ви копіюєте гілку, ви залишаєтеся на поточній гілці.
Як пояснює Хуніо С Хамано:
Створюючи нову гілку B
, копіюючи гілку, A
яка є поточною гілкою, вона також оновлюється, HEAD
щоб вказати на нову гілку.
Це, мабуть, було зроблено таким чином, тому що " git branch -c A B
" копіюється його реалізація на " git branch -m A B
",
Це не відповідає звичайному очікуванню.
Якби я сидів на синьому стільці, а хтось приходить і перефарбовує його в червоний колір, я б прийняв закінчення сидіти на стільці, яке зараз червоне (я також нормально стояти, натомість, оскільки там більше немає мого улюбленого синього крісла ).
Але якщо хтось створить новий червоний стілець, моделюючи його після синього стільця, на якому я сиджу, я не сподіваюся, що він звільниться з синього стільця і закінчиться сидіти на новому червоному.
git branch -c A B
. Дивіться мою відповідь нижче