Git sığ klonunu tam klon haline nasıl dönüştürebilirim?


Yanıtlar:


93

EDIT: git fetch --unshallow şimdi bir seçenek (teşekkürler Jack O'Connor).

Çalıştırabilirsiniz git fetch --depth=1000000(deponun bir milyondan az taahhüt olduğu varsayılarak).


238
Şimdi bu git fetch --unshallowvar (@ sdram'ın cevabında olduğu gibi), bu cevap artık en iyisi değil.
Jack O'Connor

1
@ sdram'ın cevabı benim için işe yaramadı (git 2.1.1 sürümü), ancak bu cevap işe yaradı.
kay - SE kötülük

2
Hiçbir cevap benim için işe yaramadı. Her iki komut da tüm eksik taahhütleri getirmeyi başardı, ancak yeni taahhütleri zorlamaya çalıştığımda, sunucu hakkında 'sığ'
ref'leri

3
git fetch --depth=2147483647komuta sağlamak için mümkün olan en büyük derinliktir.
clacke

5
Kullandım git fetch --unshallow, ama yine de tüm dalları göstermiyor.
Sid

674

Aşağıdaki komut (git sürüm 1.8.3) sığ klonu normal olana dönüştürecektir

git fetch --unshallow

Daha sonra, orijindeki tüm şubelere erişmek için (yorumlarda @Peter'e teşekkürler)

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

36
Bu - tek dal yan etkisini geri almaz. Bunu yapmak için, .git / config dosyasını düzenleyin ve fetch = + refs / heads / BRANCHNAME: refs / remotes / origin / BRANCHNAME öğesini getirme = + refs / heads / *: refs / remotes / origin / *
Peter Cordes

3
Bu, uzak şubeleri izleyen yerel şubeler oluşturmaz, bu nedenle bu ayarı almak için -b BRNAME kökeni / BRNAME öğesini kontrol etmeniz gerekir.
Peter Cordes

26
Ayrıca bkz. Stackoverflow.com/questions/17714159/… : git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"; git fetch origin bir yanıttan .git / config öğesini elle düzenlemekle aynı olmalıdır
Peter Cordes

Bu yalnızca repo sığ olarak işaretlenmişse işe yarar. Nasıl olduğunu hatırlayamıyorum, ancak açıkça sığ bir klon yapmadan tamamlanmamış bir repo ile sonuçlanabileceğiniz durumlar var. @ svick's stackoverflow.com/a/6802238/260122 her seferinde işe yarayan yanıttır .
clacke

git fetch --unshallow --update-head-ok origin '+refs/heads/*:refs/heads/*'benim için çalıştı
gzaripov

19

Bir depoyu sadece belirli bir taahhüde kadar derinleştirmem gerekiyordu.

Okuduktan sonra man git-fetch, bir taahhüt belirleyemediğini, ancak bir tarih belirleyebildiğini öğrendim:

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

Artımlı derinleşmeye ihtiyaç duyanlar için başka bir manalıntı:

--deepen=<depth>

--Depth öğesine benzer, ancak her uzak dal geçmişinin ucu yerine geçerli sığ sınırdan taahhüt sayısını belirtir.



0

Yukarıdaki mesajların hiçbiri hile yapmadı. Sığ bir klondan başlayarak git etiketleriyle çalışmaya çalışıyorum.

Önce denedim

git fetch --update-shallow

hangi tür yarı yolda çalıştı. Henüz etiket yok!

git fetch --depth=1000000

Bu son komut gerçekten etiketleri getirdi ve sonunda çalıştırabilirim

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

ve onunla yapılabilir.

HTH

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.