Gitignore'u gitignore'a ekleyin


140

.gitignoreDosyayı .gitignorekendisine eklemek mümkün mü ?

.gitignore

Yine de çalışmıyor

Düzenlenmiş dosyalarda görmek istemiyorum


8
neden bunu yapmak istersin sadece değişikliklerinizi uygulayın. .gitignoredeponuzun bir parçası olması ve proje için gereksiz dosya kalıplarını listelemesi gerekiyor.
KurzedMetal

1
.gitignoreDeponuzun bir parçası olmalıdır, böylece ekibinizdeki herkes aynı dosyaları görmezden gelir veya kontrol eder. Çünkü .gitignorekod klasörlerde olduğu yerde bunu dağıtmak zorunda anlamına gelmez.
Ryan Lundy


git rm --cached .gitignore.gitignore'u kullanabilir ve izini kaldırabilirsiniz
hassanzadeh.sd

Yanıtlar:


170

.gitignoreDosyanın amacı yanlışlıkla böyle oluşturulan önbellek dosyaları gibi, bir projede bazı ortak dosyaları uygulanıyor gelen bir proje üzerinde işbirliği herkesi önlemektir. Bu nedenle .gitignore, arşivde yer alması gerektiği için görmezden gelmemelisiniz .

Tek bir depodaki dosyaları yok saymak, ancak yok sayma listesinden kaçınmak istiyorsanız (örneğin kişisel dosyalar için) bunları .git/info/excludeo havuza ekleyebilirsiniz .

Makinenizdeki her depodaki belirli dosyaları yok saymak istiyorsanız, dosyayı oluşturabilir ~/.gitignore_globalve ardından çalıştırabilirsiniz.

git config --global core.excludesfile ~/.gitignore_global

36

Bir .gitignore, hiç iade edilmemişse kendini yok sayabilir :

mhaase@ubuntu:~$ git --version
git version 1.7.9.5
mhaase@ubuntu:~$ git init temp
Initialized empty Git repository in /home/mhaase/temp/.git/
mhaase@ubuntu:~$ cd temp
mhaase@ubuntu:~/temp$ touch .gitignore foo bar baz bat
mhaase@ubuntu:~/temp$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       .gitignore
#       bar
#       bat
#       baz
#       foo
mhaase@ubuntu:~/temp$ echo "foo" >> .gitignore
mhaase@ubuntu:~/temp$ echo ".gitignore" >> .gitignore
mhaase@ubuntu:~/temp$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       bar
#       bat
#       baz
nothing added to commit but untracked files present (use "git add" to track)

.Gitignore'a giriş yaparsanız (kendini yok saymasını söylemeden önce), daha sonra kendisini yok sayacak şekilde değiştirseniz bile, her zaman git durumunda görünecektir.


1
Kesinlikle, bu benim durumum. Çalışmak .gitignoreiçin git-svnkimsenin görmemesi gereken bir yerel istiyorum . Ben de onu kendisine ekledim ve işe yaradı. Ama sonra bazı gergin insanların başkalarına bunun nasıl "kötü" olduğunu açıklayıp açıklamayacağını görmek için Google'da araştırdım. Bu cevap kabul edilmeli ve ardından .git/info/excludeönerilere de olumlu oy vereceğim . Bu yüzden sadece izlenmemesi gerekiyor ... Çok şaşırtıcı değil, en azından "altüst edildiyseniz" (svn).
Tomasz Gandor

Ben .gitignoredosya ilk yedek var. Sonra git rm .gitignorebu değişikliği kullanır ve taahhüt ederim. Sonunda, .gitignorefor kuralıyla dosyayı tekrar ekleyin ve kesin .gitignore. İşe yarıyor!
qzhang

4
Bunu düzeltmek için koşabilirsiniz git rm --cached .gitignore.
Gideon

19

Bunu yapmak için gerçekten iyi bir neden yok. Dosyaların yalnızca klonunuz için yok sayılmasını istiyorsanız , onları dosyaya değil , 'e ekleyin ..git/info/exclude.gitignore


"Aşağıdaki dosyada var olan değişiklikler nedeniyle işlem tamamlanamıyor" mesajı alıyorum ve listedeki dosya, dışladığım dosya. Herhangi bir fikrin neden?
Paul McCarthy

3

Eğer girdikten sonra .gitignoresizin gitignore dosyasında, aşağıdakileri deneyin

git rm -r --cached .
git add --all
git commit -m "ignoring gitignore"
git push --set-upstream origin master

Daha önce de söylendiği gibi çalışmalıdır, eğer repo birden çok kullanıcı tarafından paylaşılıyorsa gitignore'u görmezden gelmek ters-verimli olabilir.


2

Evet yapabilirsin; hala git tarafından izlendiğinden ve git tarafından izlenen dosyalar .gitignore içinde olsalar bile her zaman değiştirilmiş olarak işaretlendiğinden, onu düzenlenen dosyalarda görmeye devam edersiniz. Öyleyse basitçe izleyin .

Ama neden sahip olduğunuz değişiklikleri taahhüt etmiyor veya sıfırlamıyorsunuz? Bu, statüden çıkarmanın çok daha iyi bir yolu ... Ayrıca, repo'nuzun herhangi bir yeni klonunun onu eklemek zorunda kalacağının farkında olun .gitignore, bu can sıkıcı olabilir.


Evet, got rm --cached .gitignoremuhtemelen onu git'ten ayrı olarak kaldırmanız gerekecek .
Tadeck

git rm --cached .gitignore git'ten kaldırılıyor. Bu yıkıcıdır ve arzu edilmez. .Gitignore yerel klon için nasıl yok sayılır?
javadba

0

Bunu .gitignore dosyanıza yazarak başarabilirsiniz. Göz *ardı edilecek her şeyi listeye ekleyecek ve sonra !.gitignore.gitignore dosyasını yok sayma listesinden kaldıracaktır.

*
!.gitignore

3
Bu, OP'nin istediği şeyin tam tersini gerçekleştiriyor
Dmitry Parzhitsky

Evet, doğru, ben de aynısını söyledim. *her şeyi göz ardı edecek. .gitignoreDosya dahil .
Ankit Singh

1
Ben OP çalışıyor, demek kaldırmak.gitignore kod tabanı dosyası (gerçekten mantıklı değil şekilde kendine ekleyerek, ama yargıç kimim). Burada dosyanın hiçbir zaman göz ardı
edilmemesini

Bu doğru. Sorunun kendisi çarpık görünüyor. Ama tamam.
Ankit Singh
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.