Ответ 1
Это предполагает, что ваш "восходящий" удаленный носитель называется "origin" , и у вас есть свой собственный вил под вашим именем пользователя (то есть "maxandersen" )
Когда у вас есть клон, запустите следующий однострочный (обновить Отслеживать все удаленные ветки git как локальные ветки:
remote=origin ; for brname in `git branch -r | grep origin | grep -v master | grep -v HEAD | sed -e 's/.*\///g'`; do git branch --track $brname $remote/$brname ; done
Это приведет к настройке ветвей отслеживания для всех ветвей, найденных в удаленном объекте с именем "origin" . Если у вас уже есть чек с этим branchname, это ничего не изменит, за исключением того, что отслеживание на месте.
(Необязательно) Теперь убедитесь, что все ваши ветки uptodate (полезно, если вы уже проверили ветки):
git pull --rebase --all
Теперь со всеми настройками ветвей для отслеживания и перетаскивания ветвей и тегов push на ваш пульт (замените "maxandersen" на свое удаленное имя):
git push --all maxandersen
git push --tags maxandersen
После этого ваша вилка находится в синхронизации.
Следующий script делает все это, включая запрос подтверждения:
## Checkout all branches from remote as tracking branches. Based on /questions/1016/track-all-remote-git-branches-as-local-branches/15447#15447
UPSTREAM=$1
MYREPO=$2
usage() {
echo "Usage:"
echo "$0 <upstream-remote> <target-remote>"
echo ""
echo "Example which ensures remote named 'maxandersen' have all the same branches and tags as 'origin'"
echo "$0 origin maxandersen"
exit 1
}
if [ -z "$UPSTREAM" ]
then
echo Missing upstream remote name.
usage
fi
if [ -z "$MYREPO" ]
then
echo Missing target remote name.
usage
fi
read -p "1. This will setup '$MYREPO' to track all branches in '$UPSTREAM' - Are you sure ?" -n 1 -r
if [[ $REPLY =~ ^[Yy]$ ]]
then
for brname in `git branch -r | grep "$UPSTREAM" | grep -v master | grep -v HEAD | sed -e 's/.*\///g'`; do git branch --track $brname $UPSTREAM/$brname ; done
fi
read -p "2. This will push all local branches and tags into '$MYREPO' - Are you sure ?" -n 1 -r
if [[ $REPLY =~ ^[Yy]$ ]]
then
git push --all $MYREPO
git push --tags $MYREPO
fi
Сохраните его как "updateallbranchestags.sh" и выполните его с помощью:
sh updateallbranches.sh origin maxandersen
И все ветки/теги из "origin" будут доступны в удаленном имени "maxandersen"