Git: İzlenen dosyaları yoksay


182

Kod oluşturulurken otomatik olarak değiştirilen bir depoda bazı izlenen dosyalar var. Bunların izini sürmek istemiyorum, sadece değiştirilmiş olarak görünmelerini istemiyorum ve eklediğimde sahnelenmelerini istemiyorum.

Mümkün mü?



5
Bu dosyalar derleme tarafından otomatik olarak oluşturulursa , git'te izlenmemelidir.
kodlama

İşte yararlı bulabileceğiniz gitignore hakkında hızlı bir eğitim: learningpassion.wordpress.com/2016/06/17/…
joker

Yanıtlar:


283

Elbette.

git update-index --assume-unchanged [<file> ...]

Geri almak ve tekrar izlemeye başlamak için:

git update-index --no-assume-unchanged [<file> ...]

3
Dosyalarda değişiklik yaparsam bu durumdaki dosyalara ne olur?
haymansfield

2
@haymansfield komutun yardım sayfası şöyle diyorGit will fail (gracefully) in case it needs to modify this file in the index e.g. when merging in a commit; thus, in case the assumed-untracked file is changed upstream, you will need to handle the situation manually.
Parham

3
--assume-unchangedKlonlama üzerine başvurmanın herhangi bir yolu var mı? Böylece tüm kullanıcılar dosyalara sahip olurlar, ancak diffs cinsinden yerel değişiklikleri görmezler.
Gauthier

10
@Tyler - hayır, bir dosya git tarafından izlendiğinde, bu dosya bir .gitignore öğesinde görünse bile her zaman izlenir. Kullanım durumum, "burada kimlik bilgilerinizi saklayacağınız, şimdi asla taahhüt etmeyeceğiniz bir dosyanın temel şablonu" gibi bir şeydir.
Jon V

5
@watbywbarif git update-index --no-assume-unchanged $(git ls-files $(git rev-parse --show-toplevel))Bir git takma adı olarak ayarlanmış komutum var . Ne zaman şüphe duyduğumda bu maskaralıklardan bazıları bunu yapıyorum
Philippe Carphin

6

Başka bir yaklaşım (Seth Robertson tarafından silinen bir cevaptan, ancak bunu yeniden diriltmeyi faydalı buldum) bir "izlenen" şablon dosyasını korumak, daha sonra yerel izlenmemiş sürümüne sahip olmak, örneğin: "config.sample.ini" veya " config.ini.template " tam bir örnek için bkz. https://gist.github.com/canton7/1423106 .

Dosya git vb. İçinde değiştirilirse endişe olmaz ve yerel izlenmemiş dosyalarda .gitignore (nihayet) kullanabilirsiniz.


5

Filtre komutunda git niteliklerini ve% f kullanan başka bir çözüm:

git config filter.orig.clean "cat %f.orig"
cp filename filename.orig
echo "filename filter=orig" >> .git/info/attributes
echo "filename.orig" >> .git/info/exclude

16
Bunun anlamı ve tesadüfen ne yaptığı hakkında daha fazla bilgi verebilir misiniz?
rogerdpack

bu, orijinal metni içeren ".orig" dosyasından içerik okuyan dosya için filtre ekler
koct9i
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.