Вообще говоря, это действительно очень плохая идея.Не делай этого.«Все удаленные ветви» часто включают в себя код незавершенного производства, заброшенный код, конфликтующие реализации одной и той же функции и т. Д. Попытка объединить их все в локальное дерево - это путь к катастрофе.
Теперь,если бы вы действительно хотели сделать очень глупую вещь, которую вы предложили, вы могли бы сделать это примерно так:
git fetch remote_source
git merge $(git branch -r | grep remote_source)
Теперь, если все, что вы действительно хотите сделать, это иметьлокальная копия всех удаленных изменений, не пытаясь объединить их с вашим деревом, тогда вам вообще не нужно делать извлечение или объединение;git fetch remote_source
делает все это за вас.Конечно, он не создает локальные ветви, сопоставленные с удаленными, - но он сносит удаленные ветви, и вы можете создавать локальные ветви, когда и когда они вам нужны, без дальнейшей связи с удаленным источником.
Учитывая дальнейшее описание проблемы в комментариях, звучит так, что вы действительно хотите переместить все ветви со старого пульта на новый, не для объединенияих в одно дерево.Для этого вам, вероятно, понадобится что-то вроде следующего:
args=()
for remote_branch in $(git branch -r | grep OLD_REMOTE/); do
branch_name=${remote_branch#*/}
args+=( "${remote_branch}:${branch_name}" )
done
git push NEW_REMOTE "${args[@]}"