Uzak bir Git deposundan belirli bir commit'i alma

Bilgisayarımda klonlamadan uzak bir Git reposundan yalnızca belirli bir işlemi almanın bir yolu var mı? Uzak deponun yapısı benimkiyle tamamen aynı ve bu nedenle herhangi bir çakışma olmayacak, ancak bunu nasıl yapacağım hakkında hiçbir fikrim yok ve o büyük depoyu klonlamak istemiyorum.

Git'te yeniyim, herhangi bir yolu var mı?

Yalnızca bir kez klonlama yaparsınız, bu nedenle uzak deponun bir klonuna zaten sahipseniz, ondan çekmek her şeyi tekrar indirmeyecektir. Sadece hangi dalı çekmek istediğinizi belirtin veya değişiklikleri getirin ve istediğiniz commit'i kontrol edin.

Yeni bir depodan getirmek, yalnızca sahip olmadığınız değişiklikleri indireceği için bant genişliği açısından çok ucuzdur. Git'in minimum yük ile doğru şeyi yapması açısından düşünün.

Git her şeyi .git klasöründe saklar. Bir commit tek başına getirilemez ve saklanamaz, tüm atalarına ihtiyacı vardır. Onlar birbiriyle ilişkilidir.


Ancak indirme boyutunu azaltmak için git'ten yalnızca belirli bir dal veya işlemle ilgili nesneleri getirmesini isteyebilirsiniz:

git fetch origin refs/heads/branch:refs/remotes/origin/branch

Bu, yalnızca uzak dal branch (ve yalnızca sizin kaçırdıklarınız) içinde bulunan komutları indirecek ve origin/branch içinde saklayacaktır. Daha sonra birleştirebilir veya kontrol edebilirsiniz.

Yalnızca SHA1 işlemesi de belirtebilirsiniz:

git fetch origin 96de5297df870:refs/remotes/origin/foo-commit

Bu, yalnızca belirtilen SHA-1 96de5297df870 commit'ini (ve kaçırdığınız atalarını) indirecek ve (mevcut olmayan) uzak dal origin/foo-commit olarak saklayacaktır.

Yorumlar (9)

Git depomda bir çekme işlemi yaptım:

git pull --rebase  

Git'in dal için tüm kodu çekmesine izin verdim ve sonra beni ilgilendiren işleme sıfırlamaya gittim.

git reset --hard

Umarım bu yardımcı olur.

Yorumlar (3)

Uzak bir deponun tek bir commit'ini şu şekilde getirebilirsiniz

git fetch  

Nerede?

örneğin

git fetch https://git.foo.com/myrepo.git 0a071603d87e0b89738599c160583a19a6d95545

commit'i (ve eksik ataları) getirdikten sonra basitçe şu şekilde kontrol edebilirsiniz

git checkout FETCH_HEAD

Bunun sizi "ayrılmış kafa" durumuna getireceğini unutmayın.

Yorumlar (9)