.gitignore (Ders 9)
Buraya kadar dersleri takip ettiyseniz git’in temel komutlarını ve kullanımını öğrenmişsinizdir. Bu derste bir temel olmasa da önemli bir konudan bahsedeceğiz: gitignore.
Hatırlarsanız ikinci derste, Github’ın sitesinde git reposu oluştururken .gitignore diye bir dosya oluşturmuştuk (başındaki nokta önemli). İngilizce bilenleriniz bunun ne olduğunu isminden tahmin etmiş olabilir. Ignore kelimesinin Türkçe karşılığı görmezden gelmektir. Yani .gitignore dosyasında görmezden gelip commit etmek istemediğimiz dosyaları tanıtacağız.
Peki neden dosyaları görmezden gelmek isteyelim? Proje içindeki bazı dosyalar ve klasörler oyun motorları veya editörler tarafından otomatik olarak oluşturulur. Örnek olarak Unity’deki Library ve Temp klasörlerini, veya Visual Studio’nun .sln uzantılı dosyalarını verebiliriz. Bunlar her bilgisayarda ilgili editörün daha hızlı çalışması için otomatik oluşturulan dosyalar oldukları için sunucuda yer kaplamalarının bir anlamı yok. Bunun haricinde de birçok durumda görmezden gelmek istediğimiz dosyalar olabilir.
Dikkat ederseniz gitingore’u hep başında nokta işareti ile yazdım: .gitignore. Bunun sebebi dosya isminin tam olarak bu şekilde olması. Bilgisayarınızda git projesinin olduğu klasörü açarsanız (dersleri takip ettiyseniz bu GitDers klasörü) içinde .git ve .gitignore dosyalarını göreceksiniz. İkisini de göremiyorsanız muhtemelen işletim sisteminiz gizli dosya ve klasörleri göstermiyordur.
Gizli dosya ve klasörleri görmek için şu adımları takip edin:
Window’ta klasörün üstündeki Görünüm (veya View) menüsünden Gizli Öğeler (veya Hidden Items) seçeneğini işaretleyin.
Mac’te CMD + SHIFT + . tuşlarına basın.
Linux’ta CTRL + H tuşlarına basın.
Şimdi eğer .git klasörünü görüyor ama .gitignore dosyasını görmüyorsanız muhtemelen .gitignore dosyası oluşturulmamıştır. Paniğe kapılmanıza gerek yok! Yeni bir metin dosyası oluşturup adını .gitignore diye değiştirebilirsiniz. Dikkat etmeniz gereken nokta dosya isminin .txt gibi herhangi bir uzantıya sahip olmaması gerektiği. Eğer .gitignore.txt gibi bir dosya yaratırsanız git onu algılamaz.
Eğer git reposu oluştururken otomatik olarak .gitignore dosyası oluşturmuşsanız açıp içeriğine bakabilirsiniz. Aşağı yukarı böyle bir şey ile karşılaşacaksınz:
[Ll]ibrary/
[Tt]emp/
[Oo]bj/
[Bb]uild/
[Bb]uilds/
Assets/AssetStoreTools*
# Visual Studio cache directory
.vs/
# Autogenerated VS/MD/Consulo solution and project files
ExportedObj/
.consulo/
*.csproj
*.unityproj
*.sln
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj
*.svd
*.pdb
*.opendb
# Unity3D generated meta files
*.pidb.meta
*.pdb.meta
# Unity3D Generated File On Crash Reports
sysinfo.txt
# Builds
*.apk
*.unitypackage
.idea
Satırları tek tek inceleyelim. Unity projelerini açıp kurcalamışsanız Assets klasörünün yanında Library, Temp gibi ekstra klasörlerin olduğunu görmüşnüzdür. Yazının başında da dediğim gibi bunlar Unity tarafından oluşturulan bir takım geçici dosyalar. Başındaki kare parantezler bir aralığı belirliyor. Mesela [a-z] dersek a ile z arasındaki bütün küçük karakterleri almış oluruz. Bizim dosyamızda [Ll]ibrary/ demiş. Bu da “L veya l ile başlayıp ibrary ile devam klasörler” demek.
Assets/AssetStoreTools* satırındaki Assets, tahmin edebileceğiniz gibi Assets klasörü. Sonundaki * işareti ise herhangi bir karakter veya karakter dizisi anlamına geliyor. Mesela *.mp3 yazarsak “.mp3 ile biten her şey” demiş oluruz.
# ile başlayan satırlar yorum satırları. Git tarafından dikkate alınmaz. Organizasyon veya not bırakmak için kullanabilirsiniz.
Bu dosya hakkında daha fazla bilgi edinmek isterseniz dokümantasyon sayfasına bakabilirsiniz. Aklınızda tutmanız gereken en önemli şey ana klasörünüz .git klasörünün olduğu yer. Yani bizim durumumuzda bu README.md dosyasının ve Scripts klasörünün olduğu yer.
Tabi istediğiniz dosya ve klasörleri komut satırı aracılığı ile de .gitignore’a eklemeniz mümkün. Ama bu derslerde komut satırından uzak durmak istediğim için bundan bahsetmeyeceğim.
Eğer hali hazırda değiştirdiğiniz bir dosya varsa, ve Changes sekmesinde görüyorsanız sağ tıklayarak .gitignore’a ekleyebilirsiniz. Örnek olarak Scripts klasörünün içinde Temp.txt diye bir dosya yaratalım ve içine rastgele bir şeyler yazalım.
Yeni yarattığımız dosyayı Changes kısmında görüyor olmalıyız. Sağ tıklarsak .gitignore’u ilgilendiren iki seçenek göreceğiz:
Ignore File (Add to .gitignore) seçeneğine tıklarsak sadece bu dosya .gitignore’a eklenecektir. Eğer Ignore All .txt Files (Add to .gitignore) seçeneğine tıklarsak da git .txt uzantılı bütün dosyaları görmezden gelecektir. Biz sadece bu dosyayı görmezden gelmek istediğimiz için ilk seçeneğe tıklayalım.
Gördüğünüz gibi Temp.txt dosyası kayboldu ve yerine .gitignore dosyası geldi:
Sağ tarafta da yaptığımız değişiklikleri görebiliyoruz. Eğer şimdi .gitignore dosyasını açarsak sonuna Scripts/Temp.txt dosyasının eklendiğini görebiliriz.
Evet, bu konuda anlatılacak daha fazla bir şey yok. Eğer daha çok özel karakter öğrenmek isterseniz dokümentasyonu açıp okuyabilirsiniz. Olur da vakit bulabilir ve çok fazla üşenmezsem yakın gelecekte büyük dosyalar ile çalışmayı kolaylaştıran LFS diye bir eklentiden bahsedeceğim. Soraki derslerde görüşmek üzere!
Filed under: Git - @ January 27, 2021 9:37 pm
Tags: git, gitignore, github desktop, github