Получение существующих ветвей git для отслеживания удаленных веток
Мой обычный рабочий процесс при работе с git выглядит примерно так:
- создать локальный репозиторий
- выполните некоторую работу в этом репозитории, добавьте/измените файлы и т.д.
- решите, что я хочу центральное удаленное местоположение для репозитория и создаю
- нажмите все коммиты из моего локального репозитория в этот новый удаленный репозиторий
Теперь, однако, я хочу иметь возможность push
и pull
из этого удаленного репозитория, не указывая, куда я нажимаю или вытягиваю; Я хочу, чтобы мой локальный мастер отслеживал удаленный мастер.
Правильный способ сделать это не ясен для меня, и я не смог определить его из документации, хотя это не должно быть более одной команды.
Поскольку это то, что когда-либо делалось только один раз в репозитории, я обычно использовал одно из двух простых, но хакерских решений:
- использовал
git clone
, чтобы создать новый локальный репозиторий и удалил старый. После git клонирования новый репозиторий настроен для отслеживания источника.
- отредактирован вручную .git/config, чтобы создать основную дорожку.
Я думаю, что мне нужно запустить команду, возможно, в какой-то форме git remote
, чтобы настроить существующий репозиторий на то, чтобы мастер-трек был удаленным мастером. Может ли кто-нибудь сказать мне, что это за команда?
Ответы
Ответ 1
Используйте set-upstream arg:
git branch --set-upstream local-branch-name origin/remote-branch-name
Выполнение приведенной выше команды корректно обновляет ваш файл .git/config и даже проверяет этот вывод:
"Имя локального ветки ответвление настроено для отслеживания имени удаленного ветки удаленного ветки от источника."
ОБНОВЛЕНИЕ: Как сказал martijn: "В версии Git v1.8.0 устаревание --set-upstream устарело. Вместо этого используйте --set-upstream-to".
git branch --set-upstream-to local-branch-name origin/remote-branch-name
Смотрите это для получения дополнительной информации.
Ответ 2
git help remote
должен показать вам, что вам нужно знать. Я думаю, что вы хотите
git remote add [remote-name] [remote-url]
# Set a local branch to follow the remote
git config branch.[branch-name].remote [remote-name]
# Set it to automatically merge with a specific remote branch when you pull
git config branch.[branch-name].merge [remote-master]
Вы также можете вручную отредактировать .git/config, чтобы установить их.
Ответ 3
Вы также можете использовать это, если хотите создать новую локальную ветвь для отслеживания удаленной ветки:
git checkout --track -b [branch_name] --track origin[or other remote name]/[remote_branch_name]
или даже лучше:
git checkout -t origin/branch_name
Ответ 4
В новых версиях git вы можете использовать
git branch --track origin/branch_name
Ответ 5
The --set-upstream flag is deprecated and will be removed.
git branch master --set-upstream-to myupstream/master
Ответ 6
Перемотав три года назад (посмотрите, что я там делал :-)), я попытался вытянуть неотслеживаемую ветку с помощью Git Bash и получил
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=origin/<branch> develop
Следующее достигло того, что мне было нужно:
$ git branch --set-upstream-to=origin/develop develop
Branch 'develop' set up to track remote branch 'develop' from 'origin'.