Korzystanie z git, aby uzyskać najnowszą wersję

380

Chcę śledzić projekt korzystający z git. Nie chcę klonować pełnego repozytorium i pełnej historii, chcę tylko najnowszą wersję i chcę móc aktualizować do nowych wersji ze zdalnego projektu.

Próbowałem użyć git clone, ale tworzy to kopię całego repozytorium (ogromny rozmiar pliku), a śledzenie zmian powoduje, że przestrzeń dyskowa jest jeszcze większa (100 MB plików zajmuje teraz ponad 2 GB).

Nie zamierzam przesyłać poprawek i nie potrzebuję historii. Chcę tylko najnowszą wersję jak w Subversion.

Czy to jest możliwe w git?

yuit
źródło
2
Git 1.9 / 2.0 (Q1 2014) będzie znacznie wydajniejszy dzięki płytkiemu klonowaniu: stackoverflow.com/a/21217267/6309 i stackoverflow.com/a/21217326/6309
VonC

Odpowiedzi:

552

Użyj --depthopcji w git clone:

Utwórz płytki klon z historią obciętą do określonej liczby zatwierdzeń.

przykład: git clone --depth=1 <remote_repo_url>

Greg Hewgill
źródło
87
przykład:git clone --depth=1 <remote_repo_url>
iDev247
14
Od czasu zatwierdzenia 82fba2b w git 1.9 ograniczenia te już nie istnieją.
niutech
1
Jakie ograniczenia?
Ignorant
4
@Triangles: Ograniczenia (już nieaktualne): Płytkie repozytorium ma wiele ograniczeń (nie można go klonować ani pobierać z niego, ani nie wypychać z niego ani do niego), ale jest wystarczające, jeśli interesuje Cię tylko najnowsza historia dużej projektu z długą historią i chciałby przesyłać poprawki jako łatki.
odinho
1
Opcja została dodana wgit 1.8.4 .
ivan_pozdeev
79

Alternatywnym rozwiązaniem dla wykonania płytkiego klonowania ( git clone --depth=1 <URL>) byłoby, jeśli strona zdalna to obsługuje, użycie --remoteopcji archiwum git :

$ git archive --format=tar --remote=<repository URL> HEAD | tar xf -

Lub, jeśli dane zdalne repozytorium jest możliwe do przeglądania przy użyciu interfejsu sieciowego, takiego jak gitweb lub GitHub, istnieje szansa, że ​​ma on funkcję „migawki” i można pobrać najnowszą wersję (bez informacji o wersji) z interfejsu internetowego.

Jakub Narębski
źródło
4
To rozwiązanie nie spełnia jednak tego wymagania: „Chcę móc aktualizować do nowych wersji ze zdalnego projektu”. Ponieważ zasadniczo pobiera archiwum, nie będzie w stanie szybko przejść do zatwierdzenia ani dwóch. „Płytki klon” pozwala na to. Wydaje mi się jednak, że to rozwiązanie ma swoje zastosowania.
VasiliNovikov,