Tindak lanjut dari ini begitu-pertanyaan: jika saya memiliki clone dangkal, bagaimana untuk mengambil semua komit tua untuk membuatnya menjadi clone penuh?
Tindak lanjut dari ini begitu-pertanyaan: jika saya memiliki clone dangkal, bagaimana untuk mengambil semua komit tua untuk membuatnya menjadi clone penuh?
Jawaban:
EDIT: git fetch --unshallow
sekarang adalah opsi (terima kasih Jack O'Connor).
Anda dapat menjalankan git fetch --depth=1000000
(dengan asumsi repositori memiliki kurang dari satu juta komit).
git fetch --unshallow
ada (seperti pada jawaban @ sdram), jawaban ini bukan lagi yang terbaik.
git fetch --depth=2147483647
adalah kedalaman terbesar yang mungkin disediakan untuk perintah.
git fetch --unshallow
, tetapi masih tidak menunjukkan semua cabang.
Perintah di bawah ini (git versi 1.8.3) akan mengubah klon dangkal menjadi klon biasa
git fetch --unshallow
Kemudian, untuk mendapatkan akses ke semua cabang asal (terima kasih @Peter dalam komentar)
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
git fetch origin
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*";
git fetch origin
dari jawaban harus sama dengan mengedit .git / config dengan tangan
git fetch --unshallow --update-head-ok origin '+refs/heads/*:refs/heads/*'
bekerja untuk saya
Saya perlu memperdalam repo hanya ke komit tertentu.
Setelah membaca man git-fetch
, saya mengetahui bahwa seseorang tidak dapat menentukan komit, tetapi dapat menentukan tanggal:
git fetch --shallow-since=15/11/2012
Bagi mereka yang membutuhkan pendalaman tambahan, man
kutipan lain :
--deepen=<depth>
Mirip dengan --depth, kecuali itu menentukan jumlah komit dari batas dangkal saat ini dan bukan dari ujung setiap sejarah cabang jarak jauh.
Tak satu pun dari pesan di atas yang berhasil. Saya mencoba bekerja dengan git tag mulai dari klon yang dangkal.
Pertama saya mencoba
git fetch --update-shallow
jenis apa yang bekerja setengah jalan. Namun, tidak ada tag yang tersedia!
git fetch --depth=1000000
Perintah terakhir ini benar-benar mengambil tag dan akhirnya saya bisa mengeksekusi
git checkout -b master-v1.1.0 tags/v1.1.0
dan dilakukan dengan itu.
HTH