.Gitignore tam olarak nedir?


212

Az önce bir Github deposu oluşturdum ve .gitignoredosyanın ne için olduğunu merak ediyordum . Bir tane oluşturmayarak başladım, ancak çoğu havuzun bir tane olması nedeniyle bir tane ekledim. Bir tane almam gerekiyor mu? Sadece görmezden gelebilir miyim yoksa bir faydası var mı? Konuyla ilgili biraz araştırma yaptım ama somut bir açıklama bulamadım.

Yanıtlar:


175

.gitignoregit'e hangi dosyaları (veya kalıpları) yoksayması gerektiğini söyler. Genellikle çalışma dizininizde derleme ürünleri, geçici IDE'lerin oluşturduğu geçici dosyalar gibi diğer ortak çalışanlar için yararlı olmayan geçici dosyaları işlemekten kaçınmak için kullanılır.

Tüm detayları burada bulabilirsiniz .


Bu nedenle, github.com'da yeni bir depoda bir .gitignore oluşturursanız ve sonra git init ve git add yapın . yerel bilgisayarınızda - henüz bu depoya bağlı olmadığı için .gitignore'a bağlı değil - bu nasıl çalışır? Git taahhüdü gerçekleştirdiğimde etkili olur mu? Veya?
Ocak'ta Xonatron

ne için _._gitignorekullanılır? sadece gitignore alt bir Yöndeyken kullanılır?
Saikat Chakrabortty

Yani yerel olarak kalıyor, ancak kökeni zorlanmıyor mu? Bazı kullanıcılar github repo'yu indirirse, bu gizli dosya da indirilir mi?
Zaveri ile tanışın

Yoksaymak ne demektir? Yoksaymayı kim / ne / ne zaman yapar? Yoksayılan kelimenin ne anlama geldiğini biliyorum ama Git bağlamında görmezden gelmenin ne anlama geldiğine dair net bir açıklama bulamıyorum. Açıkçası terim, onu anlayan insanlar tarafından tamamen anlaşılabilir, ancak bilmeyen insanlar için bir şeyi tanımlamak için yazılmış herhangi bir şey, bağlama özgü tanımları olan tüm terimleri açıklamak zorundadır.
user34660

1
@ user34660 Yoksay yalnızca şu anlama gelir - Git, dosyada (desenler) tarafından belirtilen dosyalardaki değişiklikleri izlemez .gitignore. Onları değiştirseniz bile git onları değiştirilmiş olarak göstermez.
Mureinik

42

Git'in çalışma dizininizde yoksaymasını istediğiniz dosyaların bir listesidir.

Bir Mac'te olduğunuzu ve tüm dizinlerinizde .DS_Store dosyalarınız olduğunu varsayalım. Git'in yoksayılmasını istiyorsunuz, bu nedenle .gitignore içinde .DS_Store satır ekleyin. Ve bunun gibi.

Git belgeleri size bilmeniz gereken her şeyi söyleyecektir: http://git-scm.com/docs/gitignore


2
Kişisel .DS_Storeben henüz bir projede kullanmak gerekli değildir çünkü bu kavram üzerine cluing değildi sanırım olarak senaryo nihayet benimle yankılandı. Teşekkür ederim. Ben kullanarak sona erdi bu Özellikle belirterek tüm farklı işletim sistemleri kullanan bir başlangıç noktası olarak # OS generated files #bölüm.
phoenixlaef

2
Bu konuya geç kaldığımı biliyorum, ama teşekkür ederim @AndyLester! Programlama ve Github söz konusu olduğunda acemiyim. Bu tür sorulara cevap vermek için yazılan cevapların çoğunun aceminin anlayamayacağı terimlerle dolu olduğunu görüyorum (yani derleme ürünleri, geçici dosyalar IDE'ler .... bu şeyler nelerdir!). Ancak, Mac açıklamanız zarif sadeliği ile mükemmel!
Vesuccio

21

Taahhüt yaparken, yanlışlıkla geçici dosyalar eklemek veya belirli klasörler oluşturmak istemezsiniz. Bu nedenle .gitignore, taahhütte bulunmak istemediğiniz öğeleri listeleyerek kullanın .

Ayrıca, önemli git status olan, git statusdeğiştirilmiş dosyaları listelemek istediğiniz en sık kullanılan komutlardan biridir .

Sen senin isteyeyim git statusliste görünüm temiz istenmeyen dosyaları. Örneğin , aşağıdakileri listelememi a.cpp, b.cpp, c.cpp, d.cpp & e.cppistiyorum git status:

git status
a.cpp
b.cpp
c.cpp
d.cpp
e.cpp

git statusBu gibi değiştirilmiş dosyaları ara nesne dosyaları ve yapı klasöründeki dosyalar ile listelemek istemiyorum

git status
a.cpp
b.cpp
c.cpp
d.cpp
e.cpp
.DS_Store
/build/program.o
/build/program.cmake

Bu nedenle, kendimi git statusbu ara geçici dosyaları listelemekten ve yanlışlıkla depoya adamaktan kurtulmak için .gitignoreherkesin yaptığı bir şey yaratmalıyım . Yapmam gereken tek şey .gitignore, işlemek dışında bırakmak istediğim dosya ve klasörleri listelemek .

.gitignoreGereksiz dosyaları işlemekten kaçınmak için benim

/*.cmake
/*.DS_Store
/.user
/build

7

Git'in check-in yapmasını istemediğiniz dosyalar var. Git, çalışma kopyanızdaki her dosyayı üç şeyden biri olarak görür:

  1. izlenen - önceden hazırlanmış veya işlenmiş bir dosya;
  2. izlenmemiş - sahnelenmemiş veya kaydedilmemiş bir dosya; veya
  3. yoksayıldı - Git'e açıkça yok sayması söylenen bir dosya.

Yoksayılan dosyalar genellikle depo kaynağınızdan türetilebilen veya başka şekilde işlenmemesi gereken yerleşik nesneler ve makine tarafından oluşturulan dosyalardır. Bazı yaygın örnekler:

  • örneğin içeriği gibi bağımlılık önbellekleri, /node_modulesya da/packages
  • derlenmiş kod gibi .o, .pycve .classdosyalar
  • yapı çıkış dizinleri gibi /bin, /outya da/target
  • zamanında oluşturulan dosyalar gibi .log, .lockya da.tmp
  • .DS_Storeveya gibi gizli sistem dosyalarıThumbs.db
  • gibi kişisel IDE yapılandırma dosyaları .idea/workspace.xml

Yok sayılan dosyalar, deponuzun .gitignorekökünde teslim edilen adlı özel bir dosyada izlenir . Hiçbir açık git ignore komutu yoktur: bunun yerine .gitignoreyoksaymak istediğiniz yeni dosyalarınız olduğunda dosyanın elle düzenlenmesi ve işlenmesi gerekir. .gitignoredosyalar, yok sayılmaları gerekip gerekmediğini belirlemek için deponuzdaki dosya adlarıyla eşleşen desenler içerir. İşte örnek bir.gitignore dosya. Daha fazla ayrıntı için bu bağlantıya bakın


5

.Gitignore'un temel amacı - böylece alakasız dosyalar vb.

Belirli depolarda çok sayıda kişisel not / karalama var: bunlar benim için yararlı ama başkaları için değil. Github'a yüklenmesini istemem çünkü bunu okuyan herkesi karıştıracaktı. İyi olan şey git bu dosyaları "yoksaymak" isteyebilir. Bu yaklaşımın tek maliyeti, bilgisayarım çökerse, bu notları kurtaramayacağım.

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.