Git одновременное нажатие на несколько репозиториев

Как сделать git push нажатием не только на origin, но и на другой удаленный репозиторий?

as git push является только псевдонимом для git push origin, могу ли я добавить псевдоним git для одновременного нажатия на 2 удаленных репозитория (только с одной командой)?

Я не ищу здесь не git script, но хотел бы установить это для моего локального репозитория в git.

Когда я попробовал его с пост-push-сценариями, я потерпел неудачу.

Ответ 1

Я не думаю, что вы можете сделать это, установив флаг на git, но вы можете изменить файл конфигурации, который позволит вам нажимать на несколько удаленных репозиториев, не набирая их вручную вручную (ну, только набирая их в первый раз, а не после)

В файле .git/config вы можете добавить несколько URL-адресов на определенный пульт:

[remote "all"]
    url=ssh://[email protected]/repos/g0.git
    url=ssh://[email protected]/repos/g1.git

Если вы git push all, теперь вы нажимаете на все удаленные URL-адреса.

Ответ 2

Нет редактирования вручную

Вы можете добавить несколько URL-адресов в удаленную ветку (например, all) непосредственно из командной строки, используя git config --add remote.xyz.url с разными URL-адресами:

git config --add remote.all.url ssh://use[email protected]/repos/g0.git
git config --add remote.all.url ssh://[email protected]/repos/g1.git

Полностью автоматический

Если вы супер ленивы и не копируете /paster URL несколько раз, это для вас:

function git-add-push-all() {
  while read -r name url method; do
    git config --add remote.all.url "$url"
  done < <(git remote -v | awk '!/^all/ && /push/')
}

git-add-push-all # from git (sub)directory

Возможна полная bashy script (test $name и $method), но awk сладка и есть любовь для всех.

Нажмите

Затем вы можете нажать на весь пульт с помощью

git push all

Ссылки

Ответ 3

Вы также можете получить URL-адрес от настроенных пультов:

for repo in g0 g1 ...
do
    git config --add remote.all.url `git config remote.$repo.url`
done

где g0, g1,... - имена ваших пультов.