it-swarm.com.ru

git Push для нескольких репозиториев одновременно

Как я могу сделать git Push для Push не только в Origin, но и в другой удаленный репозиторий?

поскольку git Push является только псевдонимом для git Push Origin, могу ли я использовать псевдоним git Push to Push для 2 удаленных репозиториев одновременно (только с помощью одной этой команды)?

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

Когда я попробовал это с пост-Push скриптами, у меня не получилось.

78
Kissaki

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

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

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

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

123
g19fanatic

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

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

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

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

Если вы супер ленивый и не хотите копировать/вставлять 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-скрипт (тест $name и $method), но awk сладок и есть любовь ко всем.

От себя

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

git Push all

Рекомендации

54
Édouard Lopez

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

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

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

0
Pierre-Olivier Vares