/ / Abrufen aller Remote-Zweige in ein leeres Git-Repository - git, github

Abrufen aller Remote-Zweige in ein leeres Git-Repository - git, github

Ich habe einen Github-Post-Receive-Hook eingerichtet, der ein Skript auf meinem Webserver ausführt, wenn ein Push in mein Github-Repository erfolgt.

Wenn das Skript ausgeführt wird, möchte ich, dass ein lokaler Klon des Repositorys mit meinem Github-Repository synchronisiert wird. Um dies zu tun, habe ich es diesen Befehl ausführen:

git fetch Herkunft && git reset --soft Refs / Fernbedienungen / Herkunft / Master

Dann, wenn ich von meinem Arbeitsplatz aus auf Github mastere, funktioniert alles gut. Wenn ich jedoch zu einem anderen entfernten Zweig dränge, werden die Änderungen nicht im lokalen blossen Repository meines Servers reflektiert.

Ich nehme an, dass es einen Weg gibt, das Skript zu holen alle von den entfernten Zweigen, aber ich weiß nicht, wie man das macht. Ich weiß, dass neuere Versionen von git eine --all Option für fetch / pull haben, aber ich benutze git Version 1.6.3.3, was nicht scheint Habe diese Option.

Weiß jemand, wie ich mein Skript bekommen kann, um alle entfernten Zweige zu holen?

Vielen Dank!

Antworten:

2 für die Antwort № 1

Verwenden Sie vielleicht ein Shell-Skript?

#!/bin/sh

for i in `git remote show`; do
git fetch $i;
done;

Hinweis: Kleiner Terminologiefehler in Ihrer Frage: Der --all Option von git fetch|pull holt alle "Fernbedienungen", nicht "entfernte Zweige".


20 für die Antwort № 2

git fetch origin "*:*" hat für mich gearbeitet.


0 für die Antwort № 3

Ich stellte mir meine eigene Lösung vor, während ich bei mir bines. Ich habe jedoch Ramkumars akzeptiert, weil es die Inspiration dafür war. Der Unterschied ist, dass ich nicht von allen Fernbedienungen, sondern jedem entfernten Zweig in "Herkunft" abholen möchte ...


#!/bin/bash
REMOTE_BRANCHES=$(git branch -r | awk -F"/" "{print $2}")
for i in $REMOTE_BRANCHES; do
git fetch origin $i
done

HAFTUNGSAUSSCHLUSS: Ich habe das noch nicht wirklich umgesetzt, aber es sollte nah sein.