Svn için olduğu gibi git için de bir görmezden gel komutu var mı?


125

Ben yeni bir kullanıcıyım gitve yeni bir projeye başlıyorum. Görmezden gelmek istediğim bir sürü nokta dosyam var. İçin olduğu gibi bir yok sayma komutu gitvar svnmı?


1
Gitignore'a iyi bir alternatif: git update-index --assume-unchanged <file> , stackoverflow.com/a/16442091/2162226
Gene Bo

Yanıtlar:


136

Özel bir git ignorekomut yoktur .

.gitignoreÇalışma kopyası içinde uygun yerde bulunan bir dosyayı düzenleyin. Daha sonra bunu eklemeli .gitignoreve taahhüt etmelisiniz . Bu depoyu klonlayan herkes, bu dosyaları görmezden gelecektir.

Yalnızca ile başlayan dosya adlarının içinde bulunduğu /dizine göre olacağına dikkat edin .gitignore. Diğer her şey, hangi alt dizindeki dosyalarla eşleşecektir.

Ayrıca, .git/info/excludeyalnızca o çalışan kopyada belirli dosyaları yok saymak için düzenleme yapabilirsiniz . .git/info/excludeDosya kararlı olmayacak ve dolayısıyla sadece bu bir çalışma kopyası yerel olarak uygulanacaktır.

Ayrıca, yok sayılacak desenlere sahip global bir dosya da oluşturabilirsiniz git config --global core.excludesfile. Bu, yerel olarak aynı kullanıcının hesabındaki tüm git çalışma kopyalarına uygulanacaktır.

git help gitignoreAyrıntılar için metni çalıştırın ve okuyun.


75
Basit bir görmezden gel komutuna sahip olmamak, git ekibinin böyle bir gözetimine benziyor.
jcollum

4
@jcollum İlk bakışta yapar, ancak yeni komutlar eklemek için bir komutun takma adının basitliği VE bir metin dosyasını düzenlemenin tüm uç durumları / gotchaları / olası sorunları üzerinde çalışmanın karmaşıklığı da onu kullanıcı. Kendimi çelişkili hissediyorum çünkü hem sana katılıyorum hem de katılmıyorum.
abelito

100

Çok kullanışlı bir git ignore komutu harika tj / git-extras ile birlikte gelir .

İşte birkaç kullanım örneği:

Şu anda yok sayılmış tüm modelleri listeleyin

git ignore

Bir desen ekleyin

git ignore "*.log"

Gitignore.io'daki şablonlardan birini ekleyin

git ignore-io -a rails

git-extras çok daha kullanışlı komutlar sağlar. Kesinlikle denemeye değer.


1
Yani, git "index.html" yi yok sayarsam, bu dosyayı yoksayacak mı?
JohnAndrews

-T komutu hala uygulanabilir mi? Onu çalıştırdığınızda, sadece -t ekler ve ne olursa ben dosyayı görmezden GİT'e eklemeyi deneyin şablon
Bynho

50

Linux / Unix'te, dosyaları .gitignore dosyasına echokomutla ekleyebilirsiniz . Örneğin .svn, tüm klasörleri yok saymak istiyorsanız , bunu projenin kökünden çalıştırın:

echo .svn/ >> .gitignore

1
Bu tweet'i o sözdizimini kullanarak buldum twitter.com/noodl_io/status/669904872704253953
JohnAndrews

3
Windows Git Bash olarak, bir önceki eklemek için gerekli /gibi (yeni bir hat oluşturmak için) ve sondaki '\' echo /nbproject/project.properties\ >> .gitignoreve echo /nbproject/project.xml\ >> .gitignore.
Ryan

15

Dosyaları görmezden gelmenin iki yolu vardır:

  • .gitignoreherhangi bir klasörde, o klasör için dosyada belirtilen dosyaları yoksayacaktır. Joker karakter kullanmak mümkündür.
  • .git/info/excludeglobal-ignoresin subversions yapılandırma dosyasına benzer şekilde genel yok sayma modelini tutar .

6
Subversion'daki dizin özelliklerinin aksine , dosyadaki .gitignore'/' içermeyen kalıpların özyinelemeli olarak eşleştiğine dikkat edin (yani .gitignoredosyanın bulunduğu dizinin tüm alt dizinlerinde ) svn:ignore.
Jakub Narębski

6

Umarım çok geç değildir.

Windows kullanıyorsanız, bir .gitignore dosyası oluşturmak için aşağıdakileri yapabilirsiniz.

echo name_of_the_file_you_want_to_ignore.extension > .gitignore

.Gitignore'u düzenlemek için çalıştırabilirsiniz

notepad .gitignore

2
Zaten bir .gitignore dosyanız varsa bunu kullanmayın, üzerine yazacaktır! To eklenecek görmezden dosyayı, bunu kullanın: >> yankı ignore.ext .gitignore
TomEberhard

Haklısın, sadece .gitignore dosyası yoksa kullanılması tavsiye edilir. "Notepad .gitignore" kullanmak daha iyidir, eğer .gitignore dosyanız varsa, onu açar ve eğer yoksa bir tane oluşturur ve sonra tüm dosyaları not defterinden ekleyebilirsiniz. Satır başına 1 dosya / klasör
Nesar

3

Deponuzun kök dizininde .gitignore adlı bir dosya oluşturun. Bu dosyada, yok saymak istediğiniz her dosyanın ilgili yolunu tek bir satıra koyarsınız. *Joker karakteri kullanabilirsiniz .


2

Önceden verilen cevapları git ignorekullanarak, bir takma ad kullanarak kendi komutunuzu verebilirsiniz . Ya bunu ~ / .gitconfig dosyanıza ekleyin:

ignore = !sh -c 'echo $1 >> .gitignore' -

Veya bu komutu seçtiğiniz (* nix) kabuktan çalıştırın:

git config --global alias.ignore '!sh -c "echo $1 >> .gitignore" -'

Aynı şekilde yukarıdaki ile ve ile git excludedeğiştirerek bir komut oluşturabilirsiniz .ignoreexclude.gitignore.git/info/exclude

(Buradaki cevapları okuyarak bu iki dosya arasındaki farkı anlamadıysanız, bu soruya bakın .)


1
Buradaki cevap 1 doları doğru bir şekilde genişletiyor: stackoverflow.com/a/21884533/1465227
Archangel33

2

çalışan kopya veya depoda bulunmayan isimler için:

echo /globpattern >> .gitignore

veya mevcut bir dosya için (sh yazın komut satırı):

echo /$(ls -1 file) >> .gitignore   # I use tab completion to select the file to be ignored  
git rm -r --cached file             # if already checked in, deletes it on next commit

1

Projeniz için eksiksiz bir .gitignore dosyası tanımlamak faydalıdır . Ödül, ve gibi komutlar için uygun --allveya -aişaretin güvenli kullanımıdır .addcommit

Ayrıca, Emacs tarafından oluşturulan geçici dosyaları kapsayan gibi yaygın olarak göz ardı edilen kalıplar için genel bir ~ / .gitignore dosyası tanımlamayı düşünün *~ .


1

Bunun için git-extras yüklemelisiniz. Apt-get kullanarak Ubuntu'ya kurabilirsiniz,

$ sudo apt-get install git-extras

Daha sonra git ignore komutunu kullanabilirsiniz.

$ git ignore file_name

3
Mac'te, Homebrew yüklüyse çalıştırabilirsiniz brew install git-extras.
Alex Glover

0

Joe Blau'nun gitignore.io'yu da kullanabilirsiniz.

Ya web arayüzü aracılığıyla https://www.gitignore.io/

Veya CLI aracını kurarak çok kolaydır ve hızlıdır, terminalinize aşağıdakileri yazmanız yeterlidir:

Linux:
echo "function gi() { curl -L -s https://www.gitignore.io/api/\$@ ;}" >> ~/.bashrc && source ~/.bashrc

OSX:
echo "function gi() { curl -L -s https://www.gitignore.io/api/\$@ ;}" >> ~/.bash_profile && source ~/.bash_profile

Ve sonra gigitignore kriterlerine ihtiyaç duyduğunuz tüm platform / ortam öğelerine göre followd yazabilirsiniz.

Misal!
Grunt içeren bir düğüm projesi üzerinde çalıştığınızı ve linux üzerinde webstorm kullandığınızı varsayalım, o zaman şunu yazmak isteyebilirsiniz:
gi linux,webstorm,node,grunt > .gitignore(yepyeni bir dosya oluşturmak için)
veya
gi linux,webstorm,node,grunt >> .gitignore(yeni kuralları mevcut bir dosyaya eklemek / eklemek için) )

bam, gitmekte iyisin

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.