2013-03-28 13 views
9

Mam folder - "Repos" - zawierający repo, które mnie interesują. Zostały one sklonowane z bitbucketu, ale domyślam się, że github może być również źródłem.Aktualizowanie wszystkich transakcji w folderze?

Repos 
    - music-app 
    - elephant-site 
    - node-demo 

Czy istnieje komenda git że mogę używać, jakie kroki thru każdego folderu w Repos i widzi, czy są nowe rewizje na serwerze i pobieranie nowych rzeczy? Jeśli są lokalnie nowe zatwierdzenia, prześlij je.

+1

Czy to duplikat do http://stackoverflow.com/questions/3497123/run -git-pull-over-all-podkatalogów? – Dirk

Odpowiedz

21

Spróbuj tego:

cd repos 
find . -maxdepth 1 -type d -exec sh -c '(cd {} && git pull)' ';' 
+0

Zastrzeżenie (być może oczywiste): Działa to na * nix lub GitBash (i być może na Macu?), Ale nie na linii poleceń systemu Windows. –

+0

Powinienem wspomnieć, że jestem na macu. ls foreach "git pull" po prostu zwraca "fatal: nie jest repozytorium git (lub żadnym z katalogów nadrzędnych): .git" ... czy mój folder Repos również musi być git repo? – cannyboy

+0

@cannyboy Ah, zaktualizował polecenie. –

0

Aby utrzymać kilka repo, można użyć git submodule.

Użyj git submodule add, aby dodać repozytorium jako submoduł i użyć aktualizacji git submodule foreach git pull.

Ta metoda jest jak super projekt z kilkoma projektami git.

+0

To ** nie ** jak działają podmoduły git. Aktualizacja podmodułu spowoduje pobranie określonego zatwierdzenia z historii. Nadal będziesz musiał wykonać 'git submodule foreach git pull' w celu ich aktualizacji. –

+0

Masz rację. Brakuje mi polecenia git pull modułu fore git. – wmfairuz

0

Co mam to skrypty, które robi coś takiego:

for d in * 
cd $d 
git pull 
cd .. 

(Tak, to ma kilka dodatkowych dzwonki i gwizdki, że mam kilka hg repo, a inni zarządzać w git od . SVN upstream)

4

w systemie Windows, należy to zrobić dla ciebie za pomocą wiersza poleceń:

cd c:\repos 
for /d %a in (*.*) do cd c:\repos\%a && git pull 

Gdy wrócisz do klienta gitHub, powinieneś zobaczyć aktualizacje.

+1

'for/d% a in (*. *) Do cd% CD% \% a && git pull' to powinno działać równie dobrze, po prostu nie trzeba określać ścieżki spacjalnej za pomocą'% CD% 'insteard – Kuncevic

2

gitfox to narzędzie do wykonania polecenia na wszystkich subrepo

npm zainstalować gitfox -g

g ciągnąć

Powiązane problemy