2016-07-19 6 views
0

Ich habe diesen Befehl online gefunden, der es mir ermöglicht, in einem übergeordneten Verzeichnis zu sein, und es wird durch jedes Verzeichnis gehen und das Git-Repository in jedem aktualisieren. Ich kann das auch tun, um den Status usw. zu bekommen. Ich habe mich gefragt, ob es eine Möglichkeit gibt, die Ausgabe aufzuräumen und sie benutzerfreundlicher zu machen.Mehrere Git-Repositories aktualisieren - Verbesserte Ausgabe

ls | xargs -I{} git -C {} pull 

Das funktioniert gut, aber gibt mir nur die Antwort. Ich möchte, dass der Name des Repositorys und dann die Antwort usw. angezeigt wird. Gibt es eine Möglichkeit, dies zu erzwingen? Hoffentlich mit einem Alias ​​in irgendeiner Weise?

+0

Google hat ein Tool namens * Repo *, die mehr git repos manipulieren können. – ElpieKay

Antwort

2

Macht das was du willst?

for dir in * ; do if [ \! -L ${dir} -a -d ${dir}/.git ] ; then (cd ${dir} ; echo ":::: ${dir} ::::"; git pull) ; fi ; done 

Es geht in Ihrem aktuellen Verzeichnis jedes Element durch, und wenn das Element die Spitze eines Git Repository ist, wird es die Verzeichnisnamen drucken und ein git pull auszuführen. Sie können weitere Befehle hinzufügen, die Sie in jedem Repository nach der git pull ausführen möchten.

EDIT:

Sie es durch Zugabe zu ~./bash_aliases als Shell-Funktion Alias ​​kann:

git-pull-all() { 
    #command here 
} 

Oder, wenn Sie aus irgendeinem Grund es als git alias anstelle einer bash hinzufügen wollte alias, können Sie die Befehlsnamen mit ! voranstellen, wenn Sie es schaffen:

git config --global alias.pull-all '!COMMAND_HERE' 
+0

Ja, das funktioniert, aber ich hatte gehofft, dass ich in der Lage wäre, es in irgendeiner Weise zu aliasieren, also könnte ich etwas wie "git pull-all" auf der übergeordneten Ebene ausführen. Da "find" kein Git-Befehl ist, wird der Alias ​​nicht funktionieren, was ich verstehe. –

+0

Vielen Dank, die Alias-Lösung hat perfekt funktioniert. –