Получение существующих ветвей 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'.