Для любого сценария, который я предлагаю вам запустить, было бы разумно спрятать или зафиксировать все ваши изменения.
Мне нужно было перенести несколько веток с одного пульта на другой. Эти ответы требовали, чтобы местные филиалы существовали ранее.
SRC_R=origin1
DEST_R=origin2
for cbranch in $(git branch -r | grep $SRC_R | cut -d '/' -f2,3,4,5 | cut -d ' ' -f1)
do
git checkout $cbranch
git push $DEST_R $cbranch
done
Просто измените origin1 на исходный пульт, а origin2 на конечный пульт. Скопируйте это в «remoteBranchCloner.sh» и вызовите его, используя «sh callBranchCloner.sh».
Там может быть лучший способ, который не делает несколько нажатий.
Если вы используете мой код, вы, вероятно, захотите использовать кеширование учетных данных, в противном случае вам придется вводить свои учетные данные несколько раз.
Для окон :
Примечание. Этот сценарий предназначен для Linux . Если вы запустите его в «git bash», сценарий будет работать, но вы не сможете запустить его из собственной консоли, не установив что-то особенное.
git config [--global] credential.helper wincred
Для Linux
git config [--global] credential.helper cache
Где [--global] означает необязательное добавление --global
Если вы хотите установить удаленное отслеживание для всех веток на новый пульт:
DEST_R=remotename
for cbranch in `git branch`
do
git checkout $cbranch
git branch -u guru/$cbranch
done
Сохранение в виде файла .sh и запуск с "sh filename.sh" установит все восходящие потоки для отслеживания удаленного 'remotename'