Adrian Altner

Git: gleichzeitig auf mehrere Remotes pushen

Read in English


Ich hoste meine Website selbst auf einem VPS über ein Bare Repository mit Post-Receive-Hook und spiegele den Code gleichzeitig auf Codeberg. Mit einem kleinen Git-Trick reicht dafür ein einziger git push.

Zwei Push-URLs für einen Remote

Git erlaubt es, einem einzigen Remote mehrere Push-URLs zuzuweisen — so landen beide Ziele unter origin, statt als separate Remotes. Fetch läuft weiterhin nur von einer Quelle, aber beim Pushen werden alle URLs der Reihe nach bedient:

git remote set-url --add --push origin ssh://vps/var/www/meinprojekt.git
git remote set-url --add --push origin ssh://git@codeberg.org/nutzer/repo.git

Danach sieht git remote -v so aus:

origin  ssh://vps/var/www/meinprojekt.git (fetch)
origin  ssh://vps/var/www/meinprojekt.git (push)
origin  ssh://git@codeberg.org/nutzer/repo.git (push)

Ab jetzt genügt:

git push

Git schickt den Branch automatisch an beide Ziele.

Warum nicht zwei separate Remotes?

Man könnte stattdessen einen zweiten Remote codeberg anlegen und immer git push origin && git push codeberg ausführen. Das funktioniert, aber es ist leicht zu vergessen. Mit zwei Push-URLs am selben Remote passiert das Spiegeln implizit — kein zusätzlicher Schritt, kein vergessener Remote.

Notiz:

Optional lässt sich eine dritte URL ergänzen, zum Beispiel für GitHub:

git remote set-url --add --push origin git@github.com:nutzer/repo.git

Der nächste git push schickt dann automatisch an alle drei Ziele.

Mit git remote -v lässt sich jederzeit prüfen, wie viele Push-URLs gesetzt sind.