Если вы перемещаете все ветви в новое репо из старого, то в локальном репо вам необходимо настроить отслеживание каждой ветви в существующих исходных ветках, прежде чем переходить к новому репо, в противном случае все ваши ветви происхождения не появятся в новом источнике. Сделайте это вручную, отслеживая или проверяя каждую ветку, или используйте один вкладыш:
for remote in `git branch -r | grep -v '\->' | grep -v master`; do git branch --track `echo $remote|sed 's=origin/=='` `echo $remote`; done
Эта однострочная команда основана на ее версиях в других ответах на этой странице, но, возможно, лучше, потому что:
- он правильно настраивает отслеживание ветвления, в отличие от некоторых более старых вариантов этой команды на этой странице, которые предоставляют только один параметр для --track, и, таким образом, каждая ветвь заканчивается мастером отслеживания - не хорошо
- называет локальные филиалы без префикса «origin /», который лично мне не нужен, и согласуется с тем, что происходит, когда вы оформляете ветку в обычном режиме.
- пропускает мастер отслеживания, поскольку это уже происходит
- на самом деле ничего не оформляет, поэтому быстро
- избегает спотыкаться о -> в выводе git branch -r
Далее, если вы переключаете источники, замените ссылку на старый источник и укажите новый пульт. Сначала убедитесь, что вы создаете новый пульт, используя графический интерфейс bitbucket / github, но не добавляйте в него какие-либо файлы, иначе возникнет проблема слияния. Э.Г.
git remote set-url origin git@bitbucket.org:YOUR/SOMEREPO.git
Теперь нажмите. Обратите внимание, что вторая команда необходима и для добавления тегов:
git push -u --all origin
git push --tags origin