Git Notları #2 — Git İnit
Bu derste nasıl git veri tabanı oluşturabileceğimizi anlatacağım.
Git, ekip halinde çalışmamıza olanak sağladığı için dolayısıyla ekipteki kişilerin bilgilerine (isim ve eposta adreslerine) ihtiyaç duyuyor. Bunun için name ve email adında iki tane global config oluşturuyoruz. Tek yapmamız gereken terminalimizi açmak ve şu komutu vermek:
git config --global user.name "Mustafa Zahid efe"
git config --global user.email "zhdefe@gmail.com"
Git’te bütün komutlar git ile başlıyor. Git dedikten sonra config komutu ile ayar işlemi yapacağımızı belirttik ve global parametresiyle de bu ayarın bütün bilgisayar genelinde olduğunu belirttik. Daha sonra user.name diyerek kullanıcımızın adını, user.email diyerek de mail adresini atadık. Bu bilgiler biz işlem yaptıkça git veri tabanına kaydedilecek veriler. Bu veriler sayesinde kimin, projede ne gibi değişiklikler yaptığını görebileceğiz.
Kullanıcı bilgilerimizin ayarlandığından emin olmak için de aşağıdaki komutları kullanarak global ayarları veya global olmayan ayarları ekrana bastırabilirsiniz.
git config --list
git config --list --global
Parametrelerden de anlayabilirsiniz aslında ne yaptığımızı. list parametresi ile ayarlarımızı listeletmek istediğimizi söylüyoruz ve bütün ayarlarımız listeleniyor. Bu komutumuza bir de global parametresi eklersek eğer sadece global olan ayarları görüyoruz. İsterseniz
git config user.email
gibi komutlar vererek istediğiniz ayarları teker teker de elde edebilirsiniz.
Ayarlamamızı yaptığımıza göre şimdi sıra bir git veri tabanı oluşturmaya geldi. Git veri tabanı oluştururken yapmamız gereken tek şey git init komutu vermek.
git init
Bu komutu verdiğimiz zaman size şöyle bir sonuç döndürmesi lazım.
Şunu belirtmekte fayda var; ekran görüntüsündeki kalın medium yazısı benim o an çalıştığım klasörün ismi, komutumuzun bir parçası değil.
Gördüğünüz gibi medium klasörümüzün altında .git adında bir dosya oluşturduğunu belirtti bize git.
. (nokta) karakteri ile başlayan dizinler Unix tabanlı sistemlerde gizli dizin olarak adlandırılırlar ve özel bir ayar yapmadığınız sürece de göremezsiniz. Bu dizinleri görmek için terminalimizde standart ls (list) komutunu -a parametresi ile çalıştırabiliriz.
ls -a
Bu komut gizli dosya ve dizinleri de görmenizi sağlayacaktır. .git dizininin içerisini siz kendiniz kurcalarsınız isterseniz, yalnız bilmeniz gereken bir şey var. Ne yaptığınızı bilmiyorsanız bu dizine elle müdahale etmenizi tavsiye etmiyoruz. Aksi takdirde git ile alakalı birtakım problemler yaşayabilirsiniz.
Git’in Dosyalara Bakışı
Git dosyaları kendi içerisinde ikiye ayırıyor. Bunlar tracked files (takip edilen dosyalar), untracked files (takip edilmeyen dosyalar).
Takip Edilmeyen Dosyalar
Takip edilmeyen dosyalarla başlayalım. Git init komutu verdiğiniz bir dizinde oluşturduğunuz herhangi bir yeni dosya varsayılan olarak takip edilmeyen dosya olarak kategorilendirilir. Daha sonra git add komutu vererek bu dosyayı takip edilen dosyalar arasına alabilirsiniz ama bu bir sonraki ufak başlığımızın konusu.
Şimdi bir canlı örnek yapalım. Çalıştığımız dizine ders_2.txt adında bir dosya oluşturalım ve git status komutu verelim.
git status
Şöyle bir sonuçla karşılaşmamız gerekiyor. Gördüğünüz gibi untracked files adı altında ders_2.txt dosyamızı görüyoruz. Commit komutu verdiğimiz zaman takip edilen dosyalar git veri tabanına kalıcı olarak yazılırken takip edilmeyen dosyalar git veri tabanına yazılmayacak. Commit kavramından daha sonra bahsedeceğim tabii ki. Kısacası takip edilmeyen dosyalarımızın özelliği bu. takip edilmez ve commit işlemi sırasında git veri tabanına yazılmazlar. Dosyaların veri tabanına yazılmasını istemediğiniz zamanlarda dosyalarınız takip edilen dosya olsalar bile bir komutla bu dosyaları takip edilmeyen dosyalar haline getirebilirsiniz veya kalıcı olarak dikkate alınmayan dosyalar arasına alabilirsiniz. Neyse çok uzatmayalım, bunlar sonraki yazıların konuları.
Takip Edilen Dosyalar
Dosyaları takip etmek ve kalıcı olarak git veri tabanına yazmak için öncelikle dosyaları Git’e eklemeniz gerekiyor. Git’e eklediğiniz bu dosyalar “Tracked Files” (takip edilen dosyalar) olarak adlandırılıyor. Bu dosyalarda yaptığınız değişiklikler komut verdiğiniz takdirde git veri tabanına kalıcı olarak işleniyor. Herhangi bir dosyayı takip edilen dosyalar arasına almak için add komutunu vermeniz gerekiyor.
git add /dosya/yolu/dosya_ismi
Hemen daha gerçekçi bir örnek verelim. Çalışma dizinimizdeki ders_2.txt dosyamızı Git’e ekleyelim.
git add ders_2.txt
Tebrikler, ilk dosyanızı Git’e eklemiş oldunuz. Başarılarınızın devamını dileriz.
Şaka bir yana, bu dosyayı ekledikten sonra eklenip eklenmediğinden de emin olmamız gerekiyor. Bunun için de önceki örnekte yaptığımız gibi Git’e, status komutunu veriyoruz.
git status
Dosyamızı Git’e ekledikten sonra bu dosyalarımızı Commit edilecek değişiklikler (changes to be committed) hanesine yazdı. Şimdi bunun ne anlama geldiğine bir bakalım. Git, takip edilen dosyaları staged, modified ve unmodified olarak üçe bölüyor. Şimdi hemen bunları açıklayalım.
- Staged
Dosyamızı alıp gite ekledikten sonra üzerinde hiçbir değişiklik yapmazsak bu dosyamız staged olarak adlandırılıyor. Stage, “sahne” anlamına geliyor ve staged da sahnelenen gibi bir anlama geliyor. Bu dosyalarımız commit edilmeye tamamen hazır olmuş oluyor.
- Modified
Modified olarak adlandırdığımız dosyalarımız git’e eklendikten sonra üzerinde değişiklikler yaptığımız ve daha sonra tekrar git’e eklemediğimiz dosyalarımız oluyor.
- Unmodified
Bu dosyalarımız da en az bir kez commit edildikten sonra bir daha değişikliğe uğramamış dosyalar.
Bu dosyalar arasındaki ilişkiyi Git’in resmi internet sitesindeki şu diyagram ile açıklayabiliriz.
Diyagramı şöyle açıklayabiliriz. Untracked dosyalarımız git add komutunu verdiğimiz an Git’e ekleniyor ve staged oluyor.
Git commit komutunu verdiğimiz zaman staged olan dosyalarımızın hepsi unmodified haline geliyor.
Unmodified dosyalarımızda herhangi bir değişiklik yaparsak bu dosyamız modified haline geliyor ve son olarak da bu modified dosyamızı git add komutu ile Git’e eklersek bu dosyamız da tekrar staged olmuş oluyor.
Kısaca, türler arasındaki ilişkimizin bu şekilde. Bunları da anlattığımıza göre sanırım anlatacak bir şeyimiz kalmadı.
Artık, bir Git veri tabanı oluşturmayı ve bu veritabanına dosyalar eklemeyi biliyoruz. İlerleyen derslerimizde bu eklediğimiz dosyaları kalıcı olarak veri tabanına kaydetmeyi ve dosyaları nasıl takip edilen haldeyken takip edilmeyene çevirebileceğimizi anlatacağım.
Yazı serisi bittikten sonra çok yüksek bir ihtimalle Youtube Kanalımda bu derslerin videolu hallerini de paylaşacağım. Şimdiden abone olup bildirimleri açarak videoların gelmesini bekleyebilirsiniz. Buyrun efendim, kanalımın bağlantısı:
Son olarak da bu yazıda ve hazırladığım birçok içerikte (bazen bunun farkında olmasa bile) emeği geçen Emre YILMAZ’a çok teşekkür ederim :)
Herkese iyi çalışmalar dilerim. Görüşmek üzere…