2015-02-06 45 views
27

Git çalıştıran bir sunucu ile bir sitede çalışıyorum. Dağıtım için Git kullanıyorum (GitHub değil). Bu benim hook method kullanarak benim katılımı önce kuruldu ve ben this question için başvurulan ve aşağıdaki komutları girildi, ama işe yaramadı.Git'deki bir sunucu deposundan tek bir dosya nasıl çekilir?

Yani temelde, nasıl sunucudan tek bir dosya çekin mı? Örneğin, yerel dosyamın index.php dosyasını güncellemek istedim mi? git pull index.php?

+1

Olası yinelenen [mümkün Git sadece bir dosya çekmek için mi?] (http://stackoverflow.com/questions/16230838/is-it-possible-to-pull-just-one-file-in- git) –

+0

Muhtemel kopyası [Git deposundan sadece bir dosya nasıl kontrol edilir?] (http://stackoverflow.com/questions/2466735/how-to-checkout-only-one-file-from-git-repository) –

cevap

64

O (konuşlandırılmış depoda) yapmak mümkündür:

git fetch 
// git fetch will download all the recent changes, but it will not put it in your current checked out code (working area). 

Ardından:

git checkout origin/master -- path/to/file 
//git checkout origin/master -- path/to/file will checkout the particular file from the the downloaded changes (origin/master). 
+1

Teşekkür ederim. Yani 'ile ne demek istiyorsun? dosya adı? Ve eğer dosyamın kök dizinindeyse, şunu yazmam gerekirdi: 'git checkout -m index.php index.php'? – vsvs

+0

Açıklama için teşekkür ederiz. – vsvs

+0

"* origin */master" olması ya da herhangi bir uzaktan kumandadan gelebilir mi? Tarihin tamamı benim repouma mı bulaştı, yoksa dosya büyülü bir şekilde gözüküyor mu? –

-3
git clone <git_repository>.git <path_to_desired_file> 

Yani, gelen MINAStatCollector.java çekmeye - index.php

+0

Sadece bunun tek bir dosyayı klonlamadığına dikkat edin ... Tüm depoyu klonlamak istediğiniz dosyanın yoluna klonlar. –

0

kullanmayı deneyin fileName

Ör

git ödeme BRANCHNAME

0

Bu senaryo çıkageldi ne zaman - ya da daha büyük güçler - var yerel repo bir dosyayı karıştırılmış ve sadece repo bunun son sürümü yeni bir kopyasını geri yüklemek istediğiniz. Sadece dosyayı/bin/rm (git rm ile değil) ile silmek veya yeniden adlandırmak/gizlemek ve daha sonra bir git pull yayınlamak işe yaramaz: git dosyanın yokluğunu fark eder ve muhtemelen repodan çıkmasını ister (varsa) (git diff tüm satırları silecek) eksik dosyadan).

git pull

lokal eksik dosyaları geri her zaman değil ben diğer sürüm kontrol sistemleri (I yerel saklı olan dosyaları geri inanıyoruz örneğin svn update) etkilenmiş belki beri Git bana sinirli etti.

git reset --hard HEAD için sahip kaydedilmemiş değişiklikler atıyor gibi ilgi dosyayı geri yüklemek için alternatif bir yoldur. Bununla birlikte, here belirtildiği üzere, gitmeyi unuttuğunuz diğer hiçbir değişiklikiniz olmadığında, git sıfırlama, potansiyel olarak tehlikeli bir komuttur. git fetch ... git checkout strateji @chrismillah tarafından yukarıda belirtildiği

söz konusu dosyayı geri yüklemek için güzel bir cerrahi yöntemdir. arasında