2012-03-12 28 views

cevap

9

Sürüm kontrolü altındaysa bir dosya izlenir.

küçük bir örnek olarak, bir C++ proje kaynak dosyaları olarak

Makefile 
main.cpp 
interface.hpp 
worker.cpp 

olurdu; Bunları sürüm kontrolü altına koydun. Yapı sırasında,

main.o 
worker.o 
myapp 

üretilir; bunlar sürüm kontrolü altında değildir, bu yüzden git add'u bunlarda kullanmazsınız. Onlar, onlara olanları umursamadığı için adresinden ayrıldılar. Bunları .gitignore'a ekleyene kadar (.o dosyaları varsayılan olarak yok sayılır), git, onları eklemek veya yok saymak isteyip istemediğinizi bilmez, böylece siz karar verene kadar bunları git status komutuyla görüntüler.

Bir dosyanın izlenmiş olup olmadığına bakılmaksızın sürümüne de bağlı olarak, worker.cpp modelini otomatik olarak yeniden oluşturuyor ve sonraki sürümde sürüm denetiminden kaldırıyorsunuz. Dosya şimdi bu sürümde izlenmiyor. Dosyanın hâlâ sürüm kontrolü altında olduğu bir sürüme geri döndüğünüzde, git, bu dosyanın ödeme sırasında üzerine yazılmasını reddeder.

2

Git Pro book chapter detaylara denemeden izlenmeyen dosyanın kavramı söz Sayısı: Belirli bir SHA1 ödeme yaparken

, bir bütün sürüm dosyaların "anlık" olsun.
Bu anlık görüntüsüyle başvuruda bulunulmamış herhangi bir dosya numaralı ürüne erişmiyor. Bu Git ağacının bir parçası değildir:
Bkz "git - how to tell if a file is git tracked (by shell exit code)?"

(bu GitHub help page açıklandığı gibi) izlenmeyen olmalıdır görmezden istediğiniz herhangi bir dosya.

Git, bu dosyaya bir kural eklenmeden önce izlenen bir dosyayı yoksaymayacağından emin olmaz. dosyası olmalı Böyle bir durumda
genellikle git rm --cached filename

enter image description here

4

Paletli dosyalarla vardır un izlenen kez eklenmiş ve işlendiği Git tarafından ele bir (versiyon kontrollü). Programlanmamış dosyalar, kontrol edilmek istemediğiniz çoğu zaman dosyalarıdır, çünkü örneğin derleyiciniz tarafından oluşturulurlar.

İzlenmeyen dosyaları .gitignore dosyasına eklersiniz, böylece Git'i izlemeyi isteyip istemediğiniz sorulmaz.

+2

Bir "izlenen dosya", bir kez eklenmiş VE KOMİTE olan bir olduğunu söylemek tamamen yanlıştır. İzlenen bir dosya sadece indeks ağacında mevcut olan bir dosyadır - nasıl elde edildiğine dair bir şube kontrolden dolayı veya bir eklenti veya doğrudan Git su tesisatı komutundan dolayı olabilir. – Jazimov

0

Tamamen teknik bir bakış açısından: İzlenen bir dosya, Git dizininde bulunan bir dosyadır. "Sürüm kontrolü altında" bir dosya olduğunu söylemek yanıltıcıdır, çünkü bu onu repoya dönüştüren bir dosya olduğunu ve bunun izlenmesi gereken bir dosya için gerekli olmadığını belirtir.

Yeni bir Git yanıtı başlattığınızda, dizin boştur ve çalışma dizininizdeki tüm dosyalar izlenmez. Dizine eklendiğinde bir dosya izlenir - bu noktada bir SHA-1 karması oluşturulur ve bir nesne girişi .Git \ Objects klasörüne yerleştirilir. Bu andan itibaren, Git değişiklikleri, yeniden adlandırma ve silmeleri izlemek için aynı dizinin içeriğini/ismini çalışma dizininde karşılaştırabilir. Dosya dizinde mevcut olduğu sürece izlenir.