Копирование git локальной ветки между машинами? - PullRequest
14 голосов
/ 14 сентября 2009

ОК, поэтому я отслеживаю удаленное репо на двух машинах, поэтому у обоих есть главная ветка. Я также сделал локальную ветку на моем ноутбуке под названием развитие. Есть ли способ для меня, чтобы скопировать эту локальную ветку на моем настольном компьютере? Я бы использовал свой ноутбук, но по какой-то причине у меня проблемы с GDB и Emacs ...

Редактировать: это сработало для меня

git remote add laptop [username]@hostname:/path/to/repo
git fetch laptop
git checkout --track -b development laptop/development
git pull

Ответы [ 2 ]

11 голосов
/ 14 сентября 2009

Предположим, что у вас есть и репозиторий на «настольном» компьютере, и репозиторий на «портативном» компьютере, настроенный таким образом, что вы можете извлекать на «рабочий стол» с «ноутбука» и наоборот (например, через SSH или через git:// протокол, т. Е. Через git-daemon или, возможно, через простой HTTP).

На компьютерах с настольным компьютером и ноутбуком имеется ветвь master, а на компьютере с ноутбуком - ветвь разработки.

Позвольте сначала настроить удаленный ярлык и удаленное отслеживание ветвей с использованием git remote :

desktop$ git remote add laptop user@laptop:/path/to/repo

Это установит удаленные ветки с именем «ноутбук» и удаленного отслеживания: «ноутбук / мастер» (или, точнее, «refs / remotes / laptop / master»), которая следует за веткой «мастер» на «ноутбуке», и «ноутбук / разработка», который следует за веткой «разработка» на «ноутбуке».

Затем вам нужно создать локальную ветку 'development' на 'рабочем столе', которая будет следовать (отслеживать) ветке удаленного слежения 'ноутбук / разработка' (так как вы не можете разрабатывать на удаленном слежении). филиалы):

desktop$ git checkout -b development --track laptop/development

или просто (с современным git)

desktop$ git checkout --track laptop/development

Подробнее см. Справочную страницу git-branch .

Эта настройка позволяет просто использовать "git pull", когда он находится в "разработке" филиала, когда он находится на "рабочем столе", и git автоматически извлекает все изменения из репозитория на "ноутбуке" в "ноутбук / мастер" и "ноутбук / разработка" ветки удаленного отслеживания, а затем попытайтесь объединить «ноутбук / разработка» в «разработку» (текущая ветка), что обычно приводит к ускоренная перемотка вперед , то есть просто перемещает ветку «разработка».

Затем вы можете создать аналогичную настройку на «ноутбуке» (хотя для настройки существующей ветви «разработка» на «ноутбуке» для отслеживания «рабочего стола / разработки» может потребоваться редактирование файла конфигурации напрямую или через «git config»).

2 голосов
/ 14 сентября 2009

Разве вы не можете просто убрать ветку с вашего ноутбука? Git будет тянуть через http, ssh - много протоколов. Мой синтаксис git довольно ржавый, но что-то вроде ...

Редактировать: копаясь в памяти и руководствах, вам может понадобиться сначала добавить новый пульт с

git remote add ssh://remotestuff/

тогда вы можете

git checkout --track -b localBranchName remote/remoteBranch

для отслеживания ветки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...