Если у вас все еще есть origin/*
имена для удаленного отслеживания в вашем локальном хранилище, вы можете сделать это. Предупреждение: это немного неуклюже. Вероятно, лучше просто взять список имен в файл и отредактировать его, а не использовать трюк grep -v HEAD
.
git for-each-ref --format='%(refname):refs/heads/%(refname:lstrip=3)' refs/remotes/origin |
grep -v HEAD |
xargs git push origin
(на самом деле это всего одна строка, разбитая для публикации целей, хотя как три строки в sh / bash, он все еще должен работать).
Общая идея здесь - использовать каждую из ваших ссылок refs/remotes/origin/*
для удаленного отслеживания, чтобы получить идентификатор ha sh для отправки на Git в origin
, с просьбой создать или обновить свою ветвь с соответствующим именем.
Некоторые очень старые версии Git не будут обрабатывать %(refname:lstrip=3)
, так что это хороший Идея сначала запустить только часть:
git for-each-ref --format='%(refname):refs/heads/%(refname:lstrip=3)' refs/remotes/origin
и убедиться, что она выдает ожидаемый результат, например:
refs/remotes/origin/HEAD:refs/heads/HEAD
refs/remotes/origin/maint:refs/heads/maint
refs/remotes/origin/master:refs/heads/master
refs/remotes/origin/next:refs/heads/next
refs/remotes/origin/pu:refs/heads/pu
refs/remotes/origin/todo:refs/heads/todo
для моего клона Git Git хранилище для Git. Обратите внимание на дополнительную строку HEAD
, поэтому мы используем grep -v HEAD
, что неуклюже, так как оно будет выбрасывать имя ветви, такое как SHEADWICK
, если у вас есть такое имя.