Az önce keşfettim ve kullandım FETCH_HEAD
. Bir sunucudan bazı yazılımların yerel bir kopyasını istedim ve
git fetch gitserver release_1
gitserver
git depolarını depolayan makinemin adı.
release_1
, yazılımın bir sürümünün etiketidir. Benim için sürpriz, release_1
o zaman yerel makinemde bulunacak bir yer yoktu. Yazmak zorunda kaldım
git tag release_1 FETCH_HEAD
etiketli taahhüt zincirinin (release_1) uzak depodan yerel olana kopyasını tamamlamak için . Fetch, benim yerel makineye işlemek kopyalanamaz, uzaktan etiketi bulmuştu olmasaydı yerel bir etiket oluşturulur, ancak batmıştı FETCH_HEAD
ı bulmak ve kullanmak diye, taahhüt değerine. Daha sonra FETCH_HEAD
uzaktan kumandadaki etiketle eşleşen yerel bir etiket oluşturmak için kullanılır . Bu, neyin FETCH_HEAD
ve nasıl kullanılabileceğinin pratik bir örneğidir ve git getirisinin neden beklediğiniz şeyi yapmadığını merak eden başka biri için yararlı olabilir.
Bence bu amaç için en iyi şekilde kaçınılır ve yapmaya çalıştığım şeyi başarmanın daha iyi bir yolu
git fetch gitserver release_1:release_1
örneğin, release_1'yi getirmek ve yerel olarak release_1 olarak adlandırmak için. (Kaynak: dest, https://git-scm.com/book/en/v2/Git-Internals-The-Refspec ; bakınız farklı bir ad vermek istiyorsanız!)
FETCH_HEAD
Yine de zaman zaman kullanmak isteyebilirsiniz : -
git fetch gitserver bugfix1234
git cherry-pick FETCH_HEAD
Git sunucunuzdaki hata düzeltme numarası 1234'ü kullanmanın ve Git'in çöp koleksiyonunu, düzeltmenin geçerli dalınıza getirildikten sonra kopyayı sunucudan atması için iyi bir yol olabilir. (Sunucudaki hata düzeltmesinin tamamını içeren güzel ve temiz bir etiketlenmiş taahhüt olduğunu varsayıyorum!)
git fetch origin master
güncellemekleorigin/master
kalmayacakFETCH_HEAD
. Bkz. Stackoverflow.com/a/20967347/6309