2009-07-23 16 views
75

Git'de bir dosyanın belirli bir sürümüne nasıl göz atabilirim? Git'deki bir dosyanın belirli bir sürümüne nasıl göz atabilirim?

dedim this mail on the mailing list, bulunan:

$ git checkout HEAD~43 Makefile 
$ git reset Makefile 

Ama 'BAŞ ~ 43' öğrenmek için bir git log aFile yaparsam, nasıl 'BAŞ ~ 43 öğrenebilirsiniz anlamıyorum Kullanmalı mıyım?

Ve neden bu dosya için git reset çalıştırmak gerekiyor? Bu ne işe yarıyor? (: Belirli revizyon yani) dosyanın ait

+0

tam olarak "git checkout " ile aynı yapar "git reset". –

+2

Sorunuz HEAD ~ 43 sözdizimi ile ilgili ise (git-rev-parse'da belgelenmiştir), bu soruyu sorun. –

+0

http://www.lt.kernel.org/pub/software/scm/git/docs/v1.6.0.6/git- göre "Ne BAŞ ~ 45 ortalama yapar ve nasıl dosyanın özel versiyonunu bulmak için" checkout.html ve http://www.lt.kernel.org/pub/software/scm/git/docs/v1.6.0.6/git-reset.html, "git reset" tam olarak yapmaz 'git ödeme ' den için dizini günceller ve daha sonra çalışma güncellenmesi çalışma ağacında dokunmadan itibaren dizinden döner, fakat 'git reset': " git checkout" ile aynı ağacı. – yoda

cevap

94

Ne taahhüt biliyor musunuz? Sonra yapın:

git checkout <commit> <file> 

diğer komutunu:

git checkout HEAD~N <file> 

sen (Nostalji yapmak) geri aralığından dosyanın bir sürümünü almak istediğinizde mı.

+0

Bu kabul edilen cevap olmalı. – TinkerTenorSoftwareGuy

2

HEAD~43 dosyanın tamamlama (versiyonu) anlamına gelir. Bunun yerine, dosyada git log yapmayla ilgili karma işlemini kullanabilirsiniz. Sadece dosyayı istiyorsanız, üzerinde git reset çalıştırmanız gerekmez; Bu sadece dosyayı geçerli HEAD'e iletmek istiyorsanız gereklidir. Eğer bir karma veya etiketi kullanabilirsiniz böylece

15

HEAD~43, sadece treeish olduğunu. -- ile dosya adından ağaçlık ayırmanız gerekir, aksi takdirde dosya adı olarak değerlendirilir. Örneğin.

git checkout v0.45 -- filename 
git checkout HEAD^ -- filename 
git checkout 16bb1a4eeaa9 -- filename 
İlgili konular