Я знаю, как создать новую ветку, которая отслеживает удаленные ветви, но как мне сделать существующую ветку, отслеживающую удаленную ветку?
Я знаю, что могу просто отредактировать .git/config
файл, но, похоже, должен быть более простой способ.
git
branch
git-branch
Пэт Нотц
источник
источник
git push -u origin branch-name
.git pull
часто будутgit branch --set-upstream-to origin/<branch>
--set-upstream
выдает ошибку:fatal: the '--set-upstream' option is no longer supported. Please use '--track' or '--set-upstream-to' instead.
такgit branch --set-upstream-to origin/<branch name>
работает текущая команда.Ответы:
Учитывая ветку
foo
и пультupstream
:Начиная с Git 1.8.0:
Или, если локальная ветвь
foo
не является текущей ветвью:Или, если вам нравится вводить более длинные команды, они эквивалентны двум приведенным выше:
Начиная с Git 1.7.0:
Ноты:
foo
отслеживать удаленную веткуfoo
с удаленнойupstream
.git fetch upstream
заранее.Смотрите также: Зачем мне все время делать `--set-upstream`?
источник
git branch --set-upstream master origin/master
будет эквивалентно тому, что происходит автоматически при первоначальном клонировании репозитория.git push -u origin foo
viaВы можете сделать следующее (при условии, что вы извлечены на главном сервере и хотите отправить на удаленный главный филиал):
Настройте «пульт», если у вас его еще нет
Теперь настройте мастер, чтобы знать, чтобы отслеживать:
И нажмите:
источник
error: the requested upstream branch 'upstream/master' does not exist
.origin
и нетupstream
.Я делаю это как побочный эффект нажатия с
-u
опцией, как вЭквивалентный длинный вариант есть
--set-upstream
.Команда
git-branch
также понимает--set-upstream
, но ее использование может привести к путанице. Версия 1.8.0 изменяет интерфейс.Скажем, у вас есть локальная
foo
ветвь и вы хотите, чтобы она относилась к ветке с тем же именем, что и ее восходящая ветка. Сделать это сили просто
источник
--set-upstream-to=...
это именно то, что я искал.Вы можете найти этот
git_remote_branch
инструмент полезным. Он предлагает простые команды для создания, публикации, удаления, отслеживания и переименования удаленных веток. Приятной особенностью является то, что вы можете попроситьgrb
команду объяснить, какие команды git она будет выполнять.источник
Собственно для принятого ответа на работу:
источник
Я полагаю, что уже в Git 1.5.x вы можете сделать так, чтобы локальная ветка
$BRANCH
отслеживала удаленную веткуorigin/$BRANCH
, как это.Учитывая, что
$BRANCH
иorigin/$BRANCH
существует, и вы еще не вышли$BRANCH
(отключите, если у вас есть), выполните:Это воссоздает
$BRANCH
как отслеживание ветви. В-f
прижимает создание , несмотря на$BRANCH
существующие уже.--track
необязателен, если используются обычные значения по умолчанию (то есть параметр git-configbranch.autosetupmerge
имеет значение true).Обратите внимание, что если
origin/$BRANCH
его еще нет, вы можете создать его, отправив свой локальный файл$BRANCH
в удаленный репозиторий с помощью:Затем следует предыдущая команда для продвижения локальной ветви в ветку отслеживания.
источник
git push origin $BRANCH
было то, что я искал.git branch -f --track $BRANCH origin/$BRANCH
делает свое дело.1- обновите ваши локальные метаданные, используя: git fetch --all
2 - покажите свои удаленные и локальные ветки, используя: git branch -a , см. Следующий снимок экрана
3 - переключиться на целевую ветку, которую вы хотите связать с удаленным: используя
git checkout branchName
пример :
4- Свяжите вашу локальную ветку с удаленной веткой, используя:
git branch --set-upstream-to nameOfRemoteBranch
NB: nameOfRemoteBranch : скопировать из вывода шага 2 "git branch -r"
Пример использования:
источник
Убедитесь, что вы запустили:
уметь без проблем давить
источник
git-config(1)
странице руководства,tracking
синоним «устарел»upstream
.Редактирование
.git/config
, вероятно, самый простой и быстрый способ. В любом случае, это то, что делают команды Git для обработки удаленных веток.Если вы не хотите копировать файл вручную (и это не так сложно сделать), вы всегда можете использовать его
git config
для этого ... но опять же, в.git/config
любом случае , это просто отредактирует файл.Конечно, существуют способы автоматического отслеживания удаленной ветви при использовании
git checkout
(например, путем передачи--track
флага), но эти команды работают с новыми ветками, а не с существующими.источник
Очень коротко
Это сделает вашу
yourLocalBranchName
дорожку удаленнойdevelop
.источник
git push -u origin branch
(или--set-upstream-to
) взамен--set-upstream
и--track
? Я не совсем понимаю, почему я должен использовать один над другим.Для 1.6.x это можно сделать с помощью инструмента git_remote_branch :
Это заставит Git
foo
отследитьupstream/foo
.источник
Я использую следующую команду (предположим, что ваше локальное имя ветви - «имя-ветви-локальное», а имя удаленной ветви - «имя-ветви-удаленное»):
Если и локальная, и удаленная ветви имеют одно и то же имя, просто выполните следующее:
источник
Здесь, используя
github
иgit version 2.1.4
, просто сделайте:И пульты приходят через itelsef, даже если они не связаны локально:
Но, конечно, до сих пор нет местного отделения
Видеть? Теперь, если вы просто оформите заказ, он будет делать магию автоматически:
Так просто!
Резюме. Просто запустите эти 2 команды:
источник
Используйте опцию --track
После
git pull
:git checkout --track <remote-branch-name>
Или:
git fetch && git checkout <branch-name>
источник
Для создания новой ветки мы могли бы использовать следующую команду
Чтобы уже созданная ветка создала связь между удаленными и затем из этой ветки, используйте команду нижеисточник
Это не прямой ответ на этот вопрос, но я хотел оставить здесь примечание для тех, у кого может быть такая же проблема, как и у меня, при попытке настроить ветку восходящего потока.
Будьте осторожны с push.default .
В старых версиях git совпадение по умолчанию , что могло бы привести к очень нежелательному поведению, если у вас есть, например:
Локальное отделение "Мастер" отслеживание происхождения / мастера
Дистанционное отслеживание ветки "upstream" для upstream / master
Если вы попытаетесь выполнить «git push» в ветке «upstream», то при сопоставлении push.default git автоматически попытается объединить локальную ветку «master» в «upstream / master», что приведет к большому хаосу.
Это дает более вменяемое поведение:
git config --global push.default upstream
источник
В некотором роде я пытался добавить ветку удаленного отслеживания в существующую ветку, но у меня не было доступа к этому удаленному репозиторию в системе, где я хотел добавить эту ветку удаленного отслеживания (потому что я часто экспортирую копию этой ветки). репо через sneakernet в другую систему, которая имеет доступ к удаленному устройству). Я обнаружил, что не было никакого способа принудительно добавить удаленную ветвь в локальную, которая еще не была выбрана (поэтому локальная не знала, что ветвь существовала на удаленной, и я получил бы ошибку:)
the requested upstream branch 'origin/remotebranchname' does not exist
.В конце концов мне удалось добавить новую, ранее неизвестную удаленную ветку (без извлечения), добавив новый заголовочный файл в
.git/refs/remotes/origin/remotebranchname
и затем скопировав ссылку (сглаживание было самым быстрым, хромым как было ;-) из системы с доступом к источнику репо на рабочую станцию (с локальным репо, где я добавлял удаленную ветку).Как только это было сделано, я мог бы использовать
git branch --set-upstream-to=origin/remotebranchname
источник
или просто:
переключитесь на ветку, если вы еще не в ней:
запустить
и вы готовы:
Вы можете alawys взглянуть на файл конфигурации, чтобы увидеть, что именно отслеживает, запустив:
Также приятно это знать, оно показывает, какие ветви отслеживаются, а какие нет. :
источник
Для тех, кто, как и я, просто хочет синхронизировать имя вашей локальной ветви с именем удаленной ветви, вот удобная команда:
источник
Чтобы не вспоминать, что вам нужно делать каждый раз, когда вы получаете сообщение:
Вы можете использовать следующий скрипт, который устанавливает origin в качестве upstream для текущей ветви вы находитесь.
В моем случае я почти никогда не устанавливал что-то еще, кроме origin, по умолчанию для апстрима . Также я почти всегда сохраняю одно и то же имя ветки для локальной и удаленной ветки. Так что мне подходит следующее:
источник
Это будет работать тоже
источник