Если вы перемещаете все ветви в новое репо из старого, то в локальном репо необходимо настроить отслеживание каждой ветви в существующих исходных ветках, прежде чем переходить к новому репо, иначе все ваши исходные ветви не появятся в новое происхождение. Сделайте это вручную, отслеживая или проверяя каждую ветку, или используйте один вкладыш:
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