Różnica polega na tym, że podczas korzystania --mirror
, wszystko sędziowie są kopiowane jak jest. Oznacza to wszystko: zdalne śledzenie oddziałów, notatek, refs/originalals/* (kopie zapasowe z gałęzi filtru). Sklonowane repo ma to wszystko. Jest również skonfigurowany w taki sposób, aby zdalna aktualizacja ponownie pobierała wszystko od miejsca pochodzenia (nadpisywanie skopiowanych punktów odniesienia). Pomysł polega na odzwierciedleniu repozytorium, aby mieć całkowitą kopię, aby można było na przykład przechowywać centralne repozytorium w wielu miejscach lub tworzyć kopie zapasowe. Pomyśl o prostym kopiowaniu repo, z wyjątkiem znacznie bardziej eleganckiego sposobu.
Nowy documentation dość dużo mówi wszystko:
--mirror
Ustaw lustro repozytorium źródłowego. To implikuje --bare
. W porównaniu do --bare
, --mirror
nie tylko mapuje lokalne gałęzie źródła do lokalnych oddziałów celu, mapuje wszystkie odwołania (w tym odległe gałęzie, notatki itp.) I konfiguruje konfigurację refspec tak, że wszystkie te dane są zastępowane przez git remote update
w docelowe repozytorium.
Mój oryginalny odpowiedź również zauważyć różnice między nagim klonu i normalnym (nie gołej) klon - non-gołe klon konfiguruje zdalne śledzenie oddziałów, tylko tworzenie lokalnego oddziału dla HEAD
, natomiast gołej klonu bezpośrednio kopiuje gałęzie.
Załóżmy pochodzenie ma kilka oddziałów (master (HEAD)
, next
, pu
i maint
), niektóre znaczniki (v1
, v2
, v3
), niektóre zdalnych oddziałów (devA/master
, devB/master
) oraz niektóre inne pozycje literaturowe (refs/foo/bar
, refs/foo/baz
, który mogą to być notatki, skrytki, przestrzenie nazw innych programistów, kto wie).
git clone origin-url
(non-gołe): dostaniesz wszystkie znaczniki skopiowanych, lokalny oddział master (HEAD)
śledzenia zdalnego oddział origin/master
i zdalnych oddziałów origin/next
, origin/pu
i origin/maint
. Oddziały śledzenia są skonfigurowane tak, że jeśli zrobisz coś takiego jak git fetch origin
, zostaną one pobrane zgodnie z oczekiwaniami. Wszelkie odległe gałęzie (w klonowanym pilocie) i inne informacje są całkowicie ignorowane.
git clone --bare origin-url
: dostaniesz wszystkie znaczniki kopiowane, lokalne oddziały master (HEAD)
, next
, pu
i maint
żadnych zdalnych oddziałów śledzenia. Oznacza to, że wszystkie gałęzie są kopiowane tak jak są i są całkowicie niezależne, bez oczekiwania ponownego pobierania. Wszelkie odległe gałęzie (w klonowanym pilocie) i inne informacje są całkowicie ignorowane.
git clone --mirror origin-url
: każdy ostatni z tych dokumentów zostanie skopiowany tak jak jest. Dostaniesz wszystkie znaczniki, lokalne oddziały master (HEAD)
, next
, pu
i maint
, odległe oddziały devA/master
i devB/master
, inne pozycje refs/foo/bar
i refs/foo/baz
. Wszystko jest dokładnie tak, jak było w klonowanym pilocie. Zdalne śledzenie jest skonfigurowane tak, że jeśli uruchomisz git remote update
, wszystkie odwołania będą nadpisywane z punktu początkowego, tak jakbyś właśnie je skasował i zreklonował. Jak początkowo mówili doktorzy, jest to lustro. Ma być funkcjonalnie identyczną kopią, wymienną z oryginałem.
pomocne, ale jeśli chcesz, aby wcisnąć ten lustro do zdalnego repo jak github, znalazłem [link] (https://help.github.com/articles/duplicating-a-repository#mirroring-a-repositoryory) przydatne. –