.gitignore belirli bir dosyayı dışlar


94

Klasörde bulunan .gitignoredosyayı dışlamak için kullanmaya çalışıyorum . Dosyam şöyle görünüyor:templates.jspublic/app/.gitignore

/vendor
/node_modules
composer.phar
composer.lock
.DS_Store
templates.js

Ama Git Gui'yi kontrol ettiğimde, templates.jsdosya hala içinde gösteriliyor. Kullanarak bir dosyayı nasıl özellikle dışarıda bırakabilirim .gitignore?


2
Bu, dosyanın daha önce arşive zaten eklendiği anlamına mı geliyor? .gitignoreyalnızca eklenecek içeriği yok sayar.
Willem Van Onsem

2
@CommuSoft Evet, daha önce depoya eklenmişti. Peki şimdi nasıl hariç tutabilirim? Yapma şeklim .gitignoredoğru mu?
user1995781

Yanıtlar:


152

"Görmezden gel" adının önerebileceğinin aksine. .gitignoreyalnızca git adddosya oluşturduğunuzda başvurulur : başka bir deyişle, (dizininin) havuzuna önceden eklenmiş bir dosya .gitignore,.

Öncelikle .gitignore, dosya artık eklenmeyecek şekilde değiştirseniz iyi olur . .gitignoreDosyaya aşağıdaki satırı ekleyin :

public/app/template.js

Daha sonra, dosyayı depodan çıkarmanız gerekir. Muhtemelen dosyayı dosya sisteminizden kaldırmak istemezsiniz , bu şu şekilde yapılabilir:

git rm --cached public/app/template.js

--cachedBayrak dosyası dosya sisteminden kaldırılmayacak sağlar. (Önemli değilse kullanabilirsiniz git rm public/app/template.js, ancak bu dosyayı kaldıracaktır ).

Arka fon

Nedeni .gitignoreproaktif olarak kullanılmıyor çünkü bazen .gitignore. İzlemek istemiyorum mesela Say *.logBelirtebileceğiniz, dosyaları *.logiçinde .gitignore. Ancak izlemek istediğiniz belirli bir tane varsa ekleyebilirsiniz git add -f some.log. -fBayrak kuvvetleri gitdosyasını ekleyin.


bir cankurtaran, kimlik bilgilerimi halka açık
tuttu

21

Bir dosya git deposuna bir kez 'eklendiğinde', .gitignore dosyasında listelenip listelenmediğine bakılmaksızın izlenmeye devam edecektir.

Şablon.js dosyasını önceden eklediğinizi tahmin ediyorum, bu durumda siz onu depodan kaldırana kadar değişiklikler izlenmeye devam edecek. Dosya depodan kaldırıldıktan sonra, .gitignore dosyası aracılığıyla uygun şekilde yok sayılacaktır.

Bir dosyayı bir git deposundan (komut satırı) silmeden kaldırmanın yolu

git rm --cached FILENAME

Sonra bunu yaptığınızda ve gitignore'unuzdaki dosyayla işlemeye çalıştığınızda, bunu yapmaz.

Gitignore'unuza özellikle sahip olduğunuz bir dosyayı eklerseniz, dosyayı manuel olarak eklemenizin gitignore'u geçersiz kılacağını unutmayın.


Teşekkür canım, "git rm --cached DOSYAADI" :) cazibe gibi çalıştı
Kamlesh

11

Zaten bir dosyayı izliyorsanız ( git addüzerinde ve git commit), .gitignoreyardımcı olmaz.

İstediğinizin bir dosyayı izlemeyi durdurmak ve ardından.gitignore onu dışlamak için kullanmak olduğuna inanıyorum . Bir dosyayı izlemeyi durdurmak ancak dosyayı saklamak için şunu kullanın:

git rm --cached <file>


dv yapmadım ama sanırım sözcüklerinizi daha iyi seçmelisiniz. yerel dosya sisteminizde tutmaktan biraz farklıdır . Bir depo gelmez map ... bir dosya sisteminde
Willem Van Onsem

@CommuSoft Biraz tatmin edici bir şekilde düzeltildi, çok dikkatli değildim çünkü diğer insanlar daha iyi cevapladı. Önerin için teşekkürler.
Ross

7

Bu durumda templates.jsile izlemeyi durdurabilirsiniz

git rm --cached public/app/templates.js

Diğerlerinin açıkladığı gibi, .gitignoreyalnızca eklenecek içeriği yok sayar. Sık kullandığınız Örneğin, git add .ve sahip templates.jsGözlerinde farklı .gitignore, daha sonra git eklemek olmaz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.