.Gitignore dosyasına rağmen eklemeyi zorla


413

gitDosyaya rağmen dosya eklemeyi zorlamanın bir yolu var mı .gitignore?


4
Daha iyi bir soru olabilir - neden bunu yapmak istesin? İzlenen bir dosya istiyorsanız, atlayın ( .gitignoredosyadaki deseninin önüne önekleyin !, örn. !dont/ignore/this/file).
Ohad Schneider

6
@OhadSchneider Bu, taahhüt oluşturma dosyalarını başka bir şubeye zorlamak için kullanışlıdır. Güvenli dağıtımlar için StrongLoop gibi birkaç proje bunu yapıyor
Deminetix

5
@OhadSchneider Bizim için daha çok geliştirici, kullanıcı klasörüne genel bir gitignore ekleyen Visual Studio 2015 ile git'i yüklediğinden. * .Dll ve * .exe gibi dosyalar hariçtir. Bu sadece derleme sırasında alınan nuget paketleri kullanan yeni projelerimiz için harika, ancak daha az sayıda eski proje için hala çözümde manuel olarak başvurulan dll'leri kullanıyoruz. Bu projeler için, her geliştiriciye global gitignore'da * .dll ve * .exe dosyalarını yorumlamalarını söylemek yerine bunları manuel olarak eklemek istiyoruz.
Nullius

4
@Nullius Onları sadece daha yüksek bir düzeyde görmezden gelemez misiniz .gitignore( .gitignoredll ile aynı klasöre veya yukarıdaki bir klasöre veya bir şeye ekleyin )?
Ohad Schneider

Yanıtlar:


569

Bakınız man git-add:

   -f, --force
       Allow adding otherwise ignored files.

Öyleyse bunu çalıştır

git add --force my/ignore/file.foo

11
Uhm çalışmadığını, git durumuyla ilgili dosya hala gösterilmeyen
Mark

5
Gerçekten çalıştığından ve çalıştığından emin olmak için test ettim. Ortamınızı (OS, git sürümü ...) açıklayabilir misiniz? Temelde yaptığım şey bu: echo "/foo" >> .gitignore; echo "bar" > foo; git add foo # should throw an error; git add -p foo # works(yorumdaki satırları yapıştıramaz, komutları 1'e kadar uygulayamaz
Daniel Böhmer

4
Bana da aynısı oldu, daha önce git update-index - dosyalarımda değişmeden değiştirmiştim. Ben - no-assume-unchanged ile geri almak zorunda kaldı ve işe yaradı
Jako

4
Bu benim için çalışır - joker karakterler kullanarak, Windows'ta git 1.9.5 kullanarak --no - varsay-değişmeden denedikten sonra bile. "git add - f <dosyaadı>" hiçbir şey yapmaz, ancak "git add -f *" çalışır. TortoiseGit kullanımı da işe yarıyor.
mhenry1384

@ mhenry1384 Sadece Windows'ta joker karakter için çalışmasının nedeni, yol ayırıcısının nasıl kullanılmasından kaynaklanıyor olabilir. Benim için "/" eğik çizgi çalışıyor ama ters eğik çizgi "\" çalışmıyor. Bizim için cmd / PowerShell'in "/" kelimesini "\" biçimine dönüştürmesi bunun içine girmeyi kolaylaştırır.
OHW

19

Daniel Böhmer'in çalışma çözümüne rağmen, Ohad Schneider bir yorumda daha iyi bir çözüm sundu:

Dosya genellikle yoksayılırsa ve eklemeyi zorlarsanız - gelecekte yanlışlıkla tekrar yok sayılabilir (dosya silindiğinde olduğu gibi, bir taahhüt yapılır ve dosya yeniden oluşturulur.

Bunu sadece .gitignore dosyasında yoksaymalısınız: Git'teki yok sayılan dizinlerin unignore alt dizinleri


4
Doğru. Küçük veri dosyaları için --force seçeneğini kullanıyordum ve daha sonra klasör yapısının bir kısmını yeniden düzenledim ve tüm izlenen dosyaları zorladı. ANCAK: klasör hiyerarşisi olmadan .gitignorekullanımda !specific-file-name.txt, bu şekilde izleme repo çevresindeki dosyayı takip edecektir.
Merlin

Bu senaryoya bağlıdır, örneğin "1.txt" yi tüm klasörlerde hariç tutmak ve bazen "folder1 / *. Txt"
AS

14
Bu "daha iyi" bir çözüm değil. Farklı bir soruna bir çözüm.
aij

2

Bunu başarmanın başka bir yolu, gitignore dosyasını geçici olarak düzenlemek, dosyayı eklemek ve sonra gitignore'a geri dönmek olacaktır. Biraz hileli hissediyorum


10
Katılıyorum, bu yapmak istediğiniz şey değil.
Merlin
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.