2014-11-04 1 views
7

В git у меня есть ветка A. Я создаю другую ветку B, где я создаю несколько коммитов. Затем я хочу переслать ветку A на ветку B.Можно ли переслать другую ветку, не проверяя ее?

Я знаю, что могу проверить A и сделать перемотку вперед до последней фиксации B. Для этой операции требуются две модификации рабочей копии: первая должна вернуться к A, а затем вернуть рабочую копию в B. Если новые фиксации на B содержат много изменений, операция может быть довольно медленной.

Возможно ли выполнить перемотку вперед другой ветви без изменения рабочей копии? (Другими словами, чтобы переместить только указатель A)

+1

'git update-ref'. Используйте с осторожностью. –

+0

@AndrewC добавьте его в качестве ответа. –

ответ

3

Git предоставляет команду update-ref для этой цели

git update-ref A B 

Примечание: Эта команда одна из команд Git нижнего уровня и не дает какой-либо чтобы вы не могли прикрутить себя. Если B не является быстрой переадресацией A, он все равно будет обновлять A, что потенциально может сделать транзакции недоступными и подлежащими сбору мусора.

+0

@ Zeeker говорит, что он больше не теряет фиксации: http://stackoverflow.com/questions/26752567/is-it-better-to-use-git-branch-f-or-git-update-ref-to-fast -forware-existing-bra # comment42096589_26752567 –

+2

Не собирайтесь волшебно исчезать в тот момент, когда вы выполняете 'update-ref' или что-то в этом роде. Но они могут стать недоступными, и как только это произойдет, они подчиняются нормальным правилам сбора мусора. –

+0

Хм .. Я хочу сделать это, но недостаточно, чтобы использовать голый update-ref. :-( – Thilo

Смежные вопросы