Ответ уже встроен в ваш вопрос, как отмечают несколько комментаторов: используйте git branch --set-upstream-to=origin/<em>branchname branchname</em>
(или более короткую версию с -u
). Здесь может быть важно добавить несколько заметок.
Это не ветвление (или, ну, может быть, это так, поскольку эта фраза не очень хорошо определена :-)). Что это делает:
- получить все необходимые коммиты из источника, а затем
- создать или обновить локальную ветвь с именем
branchname
в зависимости от того, что выборка увидела в ветке origin
branchname
.
Обновление, если оно является обновлением, завершается ошибкой, если изменение на branchname
не является операцией ускоренной перемотки вперед. Чтобы заставить его добиться успеха в этом случае, добавьте флаг форсировки: либо --force
, либо начальный знак плюс +
.
Обновление также завершается ошибкой, если branchname
является проверенной веткой, то есть, если HEAD
является символической ссылкой на эту ветку.
Если локальная ветвь уже существует и уже имеет вышестоящий набор, вы можете не захотеть перезаписывать текущий вышестоящий параметр. Вы можете проверить с помощью git rev-parse
: <em>branchname</em>@{upstream}
имена текущих настроек восходящего потока branchname
, или произойдет сбой, если его нет, поэтому:
if ! git rev-parse $branchname@{upstream} >/dev/null 2>&1; then
git branch --set-upstream-to=origin/$branchname $branchname
fi
установит восходящий поток, если он не был установлен, но ничего не сделает, если он уже был установлен.