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.