Zorla git repo ve çalışma kopyası, LF eol
Git deposu github üzerinde barındırılan. Dosyaların çoğu başlangıçta Windows üzerinde geliştirilen ve Satır sonları konusunda çok dikkatli değildim. İlk commit yaptığımda, ben de doğru Satır sonları zorlamak için yerde herhangi gıt yapılandırma yoktu. Sonuçta benim github deposunda CRLF Satır sonları çok sayıda dosya var.
Şimdi kısmen Linux üzerinde geliştiriyorum, ve Satır sonları temizlemek istiyorum. Nasıl dosyaları doğru github LF ile saklanır sağlamak, ve benim çalışma kopyası VARSA alabilir miyim?
.gitattributes
dosya text eol=LF
; Bu doğru mu içeren kurdum? Bu kararlı ve itti, sadece github rm
repo ve yeniden klon benim yerel istenen etkiyi elde etmek için alabilir miyim?
CEVAP
Dosyaları depo hakkında biraz bilgi olmadan (saf kaynak kodu, görüntü dosyaları, ...), biraz bu soruya cevap vermek zor :)
Bunun yanında, metin dosyaları, EĞER Satır sonları olduğundan emin olmak için istekli olduğun için çalışma dizininizdeki Satır sonları gibi EĞER varsayılan için istekli olduğunu düşünürüm .git deposu, Windows ya da Linux üzerinde çalışmak hava. Üzgünüm daha doğrusu daha güvenli....
Ancak, daha iyi bir alternatif var: deponuzdaki Linux workdir, CRLF Satır sonları Windows workdir VE EĞER Satır sonları senin içinde EĞER Satır sonları Yarar.
Kısmen Linux ve Windows üzerinde çalışırken, core.eol
9 ** set core.autocrlf
11 ** ayarlanmış olduğundan emin olun.
Daha sonra aşağıdaki ile .gitattributes
dosya içeriğini değiştirmek
* text=auto
Bu Gıt sana sihirli Satır sonları dönüşüm, taahhüt ve kullanıma alma üzerine bırakır. İkili dosyaları değişmeyecektir, dosyaları olan metin dosyası Satır sonları anında dönüştürülmüş görecek olarak algılandı.
Deponuzu içeriği bildiğiniz gibi ancak, Git yardım et ve onu ikili dosyaları metin dosyaları yardımcı olabilir.
C tabanlı görüntü işleme bir proje üzerinde çalışmak şartıyla, aşağıdaki .gitattributes
dosya içeriğini değiştirmek
* text=auto
*.txt text
*.c text
*.h text
*.jpg binary
Bu uzantı c, h, veya txt olan dosyaları repo EĞER Satır sonları ile saklanır emin olacak ve çalışma dizini yerel Satır sonları olacak. Jpeg dosyaları dokunulmaz olmayacak. Diğerlerinin hepsi de aynı sihirli yukarıda görüldüğü gibi filtreleme faydalanacaktır.
Tüm bu iç detayları daha derin bir anlayış almak için çok iyi Bu yazı dalmak için öneririm"Mind the end of your line"Tim Clem, bir Githubber.
Gerçek dünyadan bir örnek olarak, aynı zamanda kolayca yükleyebilirsinizcommit.gitattributes
bir dosya için bu değişiklikleri gösterdi.
Şu yorumu dikkate alarak cevap GÜNCELLEŞTİRİN
Aslında Linux ortamım aslında bir Sanal Windows dizin paylaşımı, çünkü benim Windows CRLF dizinleri istemiyorum
Mantıklı. Açıklama için teşekkürler. Bu özel bağlamda, kendisi tarafından .gitattributes
dosyası yeterli olmayacaktır.
Deponuzu karşı aşağıdaki komutları çalıştırın
$ git config core.eol lf
$ git config core.autocrlf input
Deponuzu Linux ve Windows ortamı arasında paylaşıldığı gibi, bu yerel config hem de çevre için dosya güncellenir. core.eol
metin dosyaları kullanıma alma konusunda EĞER Satır sonları ayı yapacaktır. core.autocrlf
garanti ederpotansiyelMetin dosyaları (örneğin kopyala/yapıştır bir operasyon sonucunda) CRLF deponuzdaki EĞER dönüştürülecektir.
İsteğe bağlı olarak, ne ayırt Gıt yardımcı olabilirbir metin dosyası .gitattributes
bir dosya oluşturarak aşağıdakine benzer bir şey içeren:
# Autodetect text files
* text=auto
# ...Unless the name matches the following
# overriding patterns
# Definitively text files
*.txt text
*.c text
*.h text
# Ensure those won't be messed up with
*.jpg binary
*.data binary
Eğer .gitattributes
bir dosya oluşturmak için karar verdibunu işlemek.
Son olarak, git status
bahseder olun< . em ^"kaydetme (çalışma dizini temiz)"sonra aşağıdaki işlemi gerçekleştirin
$ git checkout-index --force *
Bu çalışma dizininizdeki dosyaları, dikkate config değişiklikleri ve .gitattributes
dosya alma ve metin dosyaları herhangi bir potansiyel göz ardı CRLF yerine yeniden oluşturacaktır.
Bu yapıldıktan sonra, çalışma dizininizdeki her metin dosyası EĞER Satır sonları taşıyacak ve git status
hala workdir olarak temiz düşünmelisiniz.
Çalışma kopyası işlerken tortoise svn ...
SVN yükseltme çalışma kopyası...
Ne kadar Değişken bir klon gelen çalış...
Çalışma kopyası XXX kilitli ve temizle...
Geçici olarak belirli bir Gıt çalışma ...