Yanıtlar:
Gönderen İlgili Git belgelerine :
Belirli bir depoya özgü olan ancak diğer ilgili depolarla paylaşılması gerekmeyen kalıplar (örneğin, havuzun içinde yaşayan ancak bir kullanıcının iş akışına özgü yardımcı dosyalar)
$GIT_DIR/info/exclude
dosyaya girmelidir .
.git/info/exclude
Dosya herhangi aynı formata sahiptir .gitignore
dosyanın. Başka bir seçenek de, core.excludesFile
global kalıplar içeren bir dosyanın adına ayarlamaktır .
Zaten değiştirilmemiş değişiklikleriniz varsa, yok sayma kalıplarınızı düzenledikten sonra aşağıdakileri çalıştırmanız gerekir:
git update-index --assume-unchanged <file-list>
Not$GIT_DIR
: Bu, git deposunun yolunu göstermek için git kılavuzunun her yerinde kullanılan bir gösterimdir . Ortam değişkeni ayarlanırsa, hangi repo içinde olduğunuzun konumunu geçersiz kılar, bu muhtemelen istediğiniz şey değildir.
Düzenleme : Başka bir yol kullanmaktır:
git update-index --skip-worktree <file-list>
Şunu tersine çevir:
git update-index --no-skip-worktree <file-list>
skip-worktree
muhtemelen tercih edilecektir assume-unchanged
.
Güncelleme : git update-index --skip-worktree [<file>...]
Bunun yerine kullanmayı düşünün , teşekkürler @danShumway! Borealid'in iki seçeneğin farkı hakkında açıklamasına bakınız .
Eski cevap:
İzlenen dosyalarda yerel değişiklikleri yoksaymanız gerekiyorsa (dosyaları yapılandırmak için yerel değişikliklere sahibiz) kullanın git update-index --assume-unchanged [<file>...]
.
git update-index --assume-unchanged my-file.php
başlaması için çalıştırmak zorunda kaldım . Bahşiş için teşekkürler!
git update-index --no-assume-unchanged my-file.php
.git/info/exclude
ne istediğinizi (sık paylaşılan ve izlenen .gitignore kirletmekten kaçınmak için)
--assume-unchanged
okumadan önce acele ettim . Birlikte undid ve daha sonra yaptığı açık olarak ... Am I? --no-assume-unchanged
--skip-worktree
Aşağıdaki satırları .gitconfig dosyanızın [takma ad] bölümüne ekleyin
ignore = update-index --assume-unchanged
unignore = update-index --no-assume-unchanged
ignored = !git ls-files -v | grep "^[[:lower:]]"
Artık git ignore my_file
yerel dosyadaki değişiklikleri yoksaymak ve değişiklikleri yok saymak için kullanabilirsiniz git unignore my_file
. git ignored
yok sayılan dosyaları listeler.
Bu cevap http://gitready.com/intermediate/2009/02/18/temporarily-ignoring-files.html adresinden alınmıştır .
Birkaç seçeneğiniz var:
.gitignore
Çalışma dizininizde kirli (veya taahhüt edilmemiş) bir dosya bırakın (veya topgit veya başka bir yama aracını kullanarak otomatik olarak uygulayın ).$GIT_DIR/info/exclude
Bir ağaca özelse, hariç tutmaları dosyanıza koyun .git config --global core.excludesfile ~/.gitignore
ve desen ekleyin ~/.gitignore
. Bu seçenek, tüm ağaçlardaki belirli desenleri yok saymak istiyorsanız geçerlidir . Ben bu kullanmak .pyc
ve .pyo
örneğin dosyaları.Ayrıca, varsa desen kullandığınızdan ve dosyaları açıkça numaralandırmadığınızdan emin olun.
git config --global
Seçeneği global olarak ayarlamanız gerektiğini düşünüyorum .
Bence aradığınız:
git update-index --skip-worktree FILENAME
yerel olarak yapılan değişiklikleri yok sayar
İşte http://devblog.avdi.org/2011/05/20/keep-local-modifications-in-git-tracked-files/ bu çözüm hakkında daha fazla açıklama!
kullanımı geri almak için:
git update-index --no-skip-worktree FILENAME
--skipworktree
daha sonra fikrimi değiştirmeli ve dosyayı tekrar izlemeye başlamak ister miyim?
git update-index --no-skip-worktree <file>
Bu işlemi daha basit hale getirmek için bazı git takma adları yükleyebilirsiniz . Bu [alias]
, .gitconfig
dosyanızın düğümünü düzenler .
git config --global alias.ignore 'update-index --skip-worktree'
git config --global alias.unignore 'update-index --no-skip-worktree'
git config --global alias.ignored '!git ls-files -v | grep "^S"'
Bunun sizin için yüklediği kısayollar aşağıdaki gibidir:
git ignore config.xml
config.xml
- yanlışlıkla bu değişiklikleri yapmanıza engel olur.git unignore config.xml
config.xml
- bu değişiklikleri tekrar uygulamanızı sağlar.git ignored
Bunları , aynı versiyonunu sunan phatmann'ın cevabına değinerek yaptım--assume-unchanged
.
Sunduğum sürüm --skip-worktree
yerel değişiklikleri yok saymak için kullanıyor . Farkın tam bir açıklaması için Borealid'in cevabına bakın , ancak esasen --skip-worktree
amaç geliştiricilerin değişikliklerini yapma riski olmadan dosyaları değiştirmesidir .
git ignored
Komut Burada sunulan kullanır git ls-files -v
ve ile başlayan sadece bu girdileri göstermek için listeyi filtreler S
etiketi. S
Etiketi olan durumu "worktree atlamak" Dosya belirtir. İle gösterilen dosya durumlarının tam listesi için git ls-files
: -t
seçeneğinin belgelerine bakın git ls-files
.
'!git ls-files -v | grep "^S"'
? Komut benim için orada çalışmıyor .. ve kaldırıldı ile iyi çalışıyor gibi görünüyor.
Expansion of alias 'ignored' failed; 'git' is not a git command
git git ls-files …
git ignore <filename>
yalnızca bu dizin için geçerlidir. Ve sonunda bu dosyada değişikliklerinizi yapmak ve uzaktan kumandaya geçmek istediğinizde git unignore <filename>
, geçici olarak tekrar izlemeye başlamak için kullanışlı olanı kullanın! Teşekkürler!
Ana dizininize bir .gitignore dosyası ekleyebilirsiniz, yani $HOME/.gitignore
veya ~/.gitignore
. Ardından git'e şu dosyayı komutla kullanmasını söyleyin:
git config --global core.excludesfile ~/.gitignore
Bu, göz ardı edilecek öğeye karar verirken başvuruda bulunan normal bir .gitignore dosyasıdır. Ana dizininizde bulunduğundan, yalnızca sizin için geçerlidir ve herhangi bir proje .gitignore dosyasını kirletmez.
Bu yaklaşımı yıllardır harika sonuçlarla kullanıyorum.
git check-ignore <file-name>
doğrulamak için kullanın . LMK sizin için çalışıyorsa
=
:git config --global core.excludesfile ~/.gitignore
.gitignore
Ana dizinin altına bir dosya koydum ve git yerine bu dosyayı kullanmasını söyledim, sonra yerel olarak kaldırmak istediğim dosyaları sildim. Ancak, değişiklikleri ittikten sonra uzak depo bu dosyaları da sildi. Ben yanlış bir şey mi yaptım?
.gitignore
, yerel dizininizdeki dosyaları yok saymakla ilgilidir. Yapmanız gereken şey, git rm --cached
onları depodan kaldıran, ancak onları yerelde bırakan şey. Bu taahhüdü git reset --soft HEAD^
geri almak ve dosyalarınızı kurtarmak gibi bir şeyle önceki taahhüdünüze geri dönebilmeniz gerekir . Git'in güzelliği bu: Git tarihinizde hala hepsi var.
İzlenmeyen dosyaları, özellikle izlenmeyen (birkaç) klasörde bulunuyorsa, yoksaymak için basit bir çözüm, .gitignore
izlenmeyen her klasöre bir dosya eklemek ve *
ardından yeni bir satır içeren tek bir satıra girmektir . İzlenmeyen dosyalar birkaç klasördeyse gerçekten basit ve anlaşılır bir çözümdür. Benim için, tüm dosyalar tek bir izlenmemiş klasörden geliyordu vendor
ve yukarıdakiler işe yaradı.
Reponuzda zaten bir .gitignore dosyası yoksa, basit bir çözüm bir .gitignore dosyası oluşturmaktır ve içinde .gitignore
yok sayılacak dosyalar listesine eklenir .
.gitignore
üstünde paylaşılan bir dosya var. Ama kirli dosyalarım derin bir klasörde, bu yüzden .gitignore
onların yanına kendim ekledim +1
git update-index --assume-unchanged [<file>...]
olarak, hariç tutma dosyasına ekleme yaptıktan sonra çalıştırdığınızdan emin olun . Değişiklikler o zamana kadar alınmayacak.