Utworzyłem repozytorium git, aby odzwierciedlić działającą witrynę (która jest repozytorium non-bare git):
git clone --mirror ssh://[email protected]/path/to/repo
Teraz, aby aktualizować ten klon lustrzany o wszystkie zmiany z jego zdalnego źródła, którego polecenia lub poleceń muszę użyć?
Chciałbym aktualizować wszystko: zatwierdzenia, odwołania, hooki, gałęzie itp.
Dzięki!
git fetch
? Czygit remote update
sam to wszystko zrobi?Jeśli chodzi o zatwierdzenia, odwołania, gałęzie i „ et cetera ”, odpowiedź Magnusa po prostu działa (
git remote update
).Ale niestety nie ma sposobu na
clone
/ lustro /update
haczyki , tak jak chciałem ...Znalazłem bardzo interesujący wątek na temat klonowania / tworzenia kopii lustrzanych haków:
http://kerneltrap.org/mailarchive/git/2007/8/28/256180/thread
Nauczyłem się:
Haczyki nie są uważane za część zawartości repozytorium.
Jest więcej danych, takich jak
.git/description
folder, który nie jest klonowany, podobnie jak haki.Domyślne haki, które pojawiają się w katalogu,
hooks
pochodzą z plikuTEMPLATE_DIR
Jest ta interesująca
template
funkcja w git.Mogę więc albo zignorować to "klonowanie haków", albo obrać
rsync
strategię, biorąc pod uwagę cele mojego serwera lustrzanego (kopia zapasowa + źródło tylko dla innych klonów).Cóż ... po prostu zapomnę o klonowaniu hooków i będę się trzymał
git remote update
drogi.clone
/update
proces, ale także skrytki, rerere, itp ... Tak więc, dla ścisłej kopii zapasowejrsync
lub równoważnej byłoby naprawdę dobrym rozwiązaniem. Ponieważ w moim przypadku nie jest to konieczne (stać mnie na brak haków, skrytek itp.), Tak jak mówiłem, będę się trzymałremote update
.Dzięki! Poprawiłem trochę moje własne "git-fu" ... :-)
źródło
Zobacz tutaj: Git nie klonuje wszystkich gałęzi na kolejnych klonach?
Jeśli naprawdę chcesz tego pociągając za gałęzie zamiast za
push --mirror
, możesz zajrzeć tutaj:"fetch --all" w repozytorium git bare nie synchronizuje lokalnych oddziałów ze zdalnymi
Ta odpowiedź zawiera szczegółowe kroki, jak to osiągnąć w stosunkowo łatwy sposób:
źródło
push
nie jest dla mnie opcją, ponieważ muszę to zrobić po stronie odbiorczej (skąd jest klon);pull
nie jest również opcją, ponieważ repozytorium lustrzane jest czystym repozytorium (brak działającego drzewa, a więc bez "ściągania") - wydaje się, żegit remote update
rzeczywiście to wszystko (znacznie łatwiejsze niż podana odpowiedź) ... W każdym razie, dzięki! Z pewnością w powiązanych pytaniach / odpowiedziach znajdują się cenne informacje.rsync
w takim przypadku postąpiłbym . Zakładam też, że zapominasz o skrytkach (patrz tutaj ) i ponownie przesyłasz informacje ...?