Jak przekonwertować płytkiego klon Git na pełny klon?


Odpowiedzi:


93

EDYCJA: git fetch --unshallow teraz jest opcja (dzięki Jack O'Connor).

Możesz uruchomić git fetch --depth=1000000(zakładając, że repozytorium zawiera mniej niż milion zatwierdzeń).


238
Teraz git fetch --unshallowistnieje (jak w odpowiedzi @ sdram), ta odpowiedź nie jest już najlepsza.
Jack O'Connor

1
Odpowiedź @ sdram nie działała dla mnie (git wersja 2.1.1), ale ta odpowiedź zadziałała.
kay - SE is evil

2
Żadna odpowiedź nie działała dla mnie. Obydwu poleceniom udało się pobrać wszystkie brakujące zatwierdzenia, ale kiedy próbuję wypchnąć nowe zatwierdzenia, pojawia się błąd związany z tym, że serwer nie wie o „płytkich” poleceniach
Tyguy7

3
git fetch --depth=2147483647jest największą możliwą głębokością do dostarczenia do polecenia.
clacke

5
Użyłem git fetch --unshallow, ale nadal nie pokazuje wszystkich gałęzi.
Sid

674

Poniższe polecenie (git wersja 1.8.3) przekształci płytkiego klona w zwykły

git fetch --unshallow

Następnie, aby uzyskać dostęp do wszystkich gałęzi pochodzenia (dzięki @Peter w komentarzach)

git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
git fetch origin

36
Nie powoduje to cofnięcia efektu ubocznego pojedynczej gałęzi. Aby to zrobić, edycja .git / config i zmiany sprowadzić = + bibl / głowice / BRANCHNAME: bibl / piloty / pochodzenie / BRANCHNAME sprowadzić = + refs / heads / *: bibl / piloty / pochodzenie / *
Peter Cordes

3
To nie tworzy lokalnych gałęzi śledzących zdalne gałęzie, więc nadal musisz pobrać -b BRNAME origin / BRNAME, aby skonfigurować.
Peter Cordes

26
Zobacz także stackoverflow.com/questions/17714159/… : git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"; git fetch origin od odpowiedzi powinno być to samo, co ręczne edytowanie .git / config
Peter Cordes

Działa to tylko wtedy, gdy repo jest oznaczone jako płytkie. Nie pamiętam jak, ale zdarzają się sytuacje, w których możesz skończyć z niepełnym repozytorium bez wyraźnego wykonania płytkiego klonu. @ stackoverflow.com/a/6802238/260122 firmy svick to odpowiedź, która działa za każdym razem.
clacke

git fetch --unshallow --update-head-ok origin '+refs/heads/*:refs/heads/*'pracował dla mnie
gzaripov

19

Musiałem pogłębić repozytorium tylko do konkretnego zatwierdzenia.

Po przeczytaniu man git-fetchdowiedziałem się, że nie można określić zatwierdzenia, ale można podać datę:

git fetch --shallow-since=15/11/2012

Dla tych, którzy potrzebują stopniowego pogłębiania, kolejny mancytat:

--deepen=<depth>

Podobne do --depth, z tym wyjątkiem, że określa liczbę zatwierdzeń z bieżącej płytkiej granicy zamiast z końca każdej historii odległych gałęzi.



0

Żadna z powyższych wiadomości nie zadziałała. Próbuję pracować z tagami git, zaczynając od płytkiego klonu.

Najpierw próbowałem

git fetch --update-shallow

który rodzaj działał w połowie. Jednak brak dostępnych tagów!

git fetch --depth=1000000

To ostatnie polecenie naprawdę ściągnęło tagi i w końcu mogłem je wykonać

git checkout -b master-v1.1.0 tags/v1.1.0

i skończyć z tym.

HTH

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.