Git: нажатие на два репозитория в одной команде

Я хочу сделать git push origin и git push my_other_remote в одной строке. Возможно ли это?

Ответ 1

Вы можете получить тот же эффект, добавив дополнительный URL-адрес push для вашего пульта origin. Например, если URL-адреса существующих пультов следующие:

$ git remote -v
origin  [email protected]:something.git (fetch)
origin  [email protected]:something.git (push)
my_other_remote git://somewhere/something.git (fetch)
my_other_remote git://somewhere/something.git (push)

Вы можете сделать:

 git remote set-url --add --push origin git://somewhere/something.git

Затем git push origin будет нажимать на оба репозитория. Однако вы можете настроить новый пульт, называемый both, чтобы избежать путаницы. Например:

 git remote add both [email protected]:something.git
 git remote set-url --add --push both [email protected]:something.git
 git remote set-url --add --push both git://somewhere/something.git

... затем:

 git push both

... попытается нажать на оба репозитория.

Ответ 2

В файле .git/config можно поместить следующее:

[remote "both"]
    url = url/to/first/remote
    url = url/to/other/remote

Теперь вы можете нажать на оба URL с помощью git push both.

Если вы также хотите извлечь из них (полезно для синхронизации), вы можете добавить следующие строки в свой .git/config файл:

[remotes]
    both = origin, other

Теперь вы также можете запустить git fetch both.

Ответ 3

Просто небольшое дополнение к уже предоставленным отличным ответам - если вы не хотите беспокоиться о добавлении "обоих" и просто хотите, чтобы все операции автоматически помещались в оба репозитория, просто добавьте ваш второй репозиторий в качестве другого URL-адреса в исходной точке в конфигурации git.

[remote "origin"]
    url = someUrl.git
    url = secondUrl.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master

Теперь "Git Push" использует оба.