2008-10-02 5 views
41

Im Grunde wollte ich so etwas wie git push mybranch to repo1, repo2, repo3Kann ich mehr als ein Repository in einem einzigen Befehl in Git verschieben?

jetzt tun bin ich nur Push oft eingeben, und wenn ich in Eile, um die das Drücken getan habe, habe ich sie einfach alle an den git push repo1 & git push repo2 & Hintergrund senden

Ich frage mich nur, ob git nativ unterstützt, was ich tun möchte, oder wenn vielleicht gibt es ein cleveres Skript da draußen, oder vielleicht eine Möglichkeit, die lokale Repo-Konfigurationsdatei zu bearbeiten, um zu sagen, ein Zweig sollte an mehrere Fernbedienungen geschoben werden.

Antwort

79

Sie mehrere URLs pro remote in git haben kann, auch wenn der git remote Befehl nicht diese letzte auszusetzen schien ich überprüft. In .git/config, geben Sie etwas wie folgt aus:

[remote "public"] 
    url = [email protected]:kch/inheritable_templates.git 
    url = [email protected]:projects/inheritable_templates.git 

Jetzt können Sie sagen: „git push public“ auf einmal beide repos zu schieben.

+2

Netter Tipp. Beachten Sie, das funktioniert nur für Push. Zum Abrufen scheint es nur den ersten URL-Eintrag zu verwenden. Es scheint auch, dass Sie einen Zweig auf diesem Multi-Remote ausrichten können. Also kannst du einfach "git pull" ohne den entfernten Namen machen, wenn du so etwas zu deiner config hinzufügst '[branch" master "] remote = public' – studgeek

+0

Danke, rettet meh das Leben! –

10

Was ich tue, ist ein einziges blankes Repository, das in meinem Home-Verzeichnis lebt, wohin ich dränge. Der Post-Update-Hook in diesem Repository drückt dann oder rsyncs zu mehreren anderen öffentlich sichtbaren Orten.

Hier ist meine Haken/Post-Update:

#!/bin/sh 
# 
# An example hook script to prepare a packed repository for use over 
# dumb transports. 
# 
# To enable this hook, make this file executable by "chmod +x post-update". 

# Update static info that will be used by git clients accessing 
# the git directory over HTTP rather than the git protocol. 
git-update-server-info 

# Copy git repository files to my web server for HTTP serving. 
rsync -av --delete -e ssh /home/afranco/repositories/public/ [email protected]:/srv/www/htdocs/git/ 

# Upload to github 
git-push --mirror github 
+0

das ist gut. sich darum kümmern, git-update-server-info zu teilen oder zu erklären? – kch

+0

Wie ich der Antwort hinzugefügt habe: git-update-server-info schreibt einige statische info-Dateien, die von git-Clients verwendet werden, die über HTTP anstatt über das git-Protokoll auf das git-Verzeichnis zugreifen. Siehe folgende für weitere Informationen: http://www.kernel.org/pub/software/scm/git/docs/git-update-server-info.html –