Commit Nedir, Ne İşe Yarar ?
Commit, kelime anlamı olarak “işlemek” demektir. Git’e eklediğimiz dosyaları kalıcı olarak Git veri tabanına işlemeye commit denir. Projede belli başlı işlemler yapıldıktan sonra dosyaları commit etmek gerekir. Örnek olarak üye kayıt-giriş işlemlerini hallettikten sonra bir commit alabilirsiniz. Daha sonra üyenin yorum yapma özelliği aktifleştikten sonra bir commit alabilirsiniz. Bu tarz çok büyük olmayan ama ufak da olmayan değişikliklerde commit almak son derece sağlıklı bir yoldur. Şimdi commitin ne işe yaradığına bakalım.
Şöyle bir örnek vermek istiyorum. Diyelim ki projenizi geliştirirken bir yer patladı veya önceden yazdığınız bir kısım, şimdi eklemek istediğiniz bir özellikle ters düştü. Bu durumda dönüp onlarca dosyadan yüzlerce satırı silmekle uğraşmanız gerekecektir. İşte bu durumda aldığımız commitler bizim hayatımızı kurtaracaktır. Git sayesinde istediğimiz zaman istediğimiz commite geri dönebiliriz. Projemiz bugün patlasa, biz dün aldığımız commite veya geçen ay aldığımız commite veya projenin çalışan son haline geri dönebiliriz. Commit dediğimiz olay bu işe yarıyor.
Bitmedi, 3 kavanoz bal alana… Sadece şakaydı ama gerçekten commitin olayı bu kadar değil. Bir de şöyle bir senaryo yazalım. Diyelim ki biz projede birkaç değişiklik yaptık ve bu değişiklikleri takım arkadaşımız kendi cihazına çekmek istiyor. Bu durumda biz projemizin bir commitini alıp sunucumuza yüklüyoruz (push ediyoruz / bu işlemden daha sonraki yazılarda bahsedeceğim). Takım arkadaşımız da projeyi bu sunucudan çekip kendi cihazında geliştirmeye devam edebiliyor. Anlayacağınız, projemizi sunucuya push etmeden önce commit etmemiz gerekiyor.
Kullandıkça zaten bütün yaptığımız işlemleri daha da iyi anlayacaksınız. Şimdilik bu iki örnek aklınızda kalsın yeter. Şimdi isterseniz nasıl Git’e eklediğimiz dosyaları commit edebileceğimizi öğrenelim. Tek yapmamız gereken şey şu komutu vermek:
git commit
Evet, bu kadar. Bu komutu verdiğimiz zaman Git’e eklemiş olduğumuz dosyalar kalıcı olarak git veri tabanına yazılıyor ve tracked files altında anlattığımız unmodified dosya haline bürünüyor.
Peki aldığımız hangi commitin ne olduğunu nasıl anlayacağız ? Bunun için commitlerimize mesajlar eklememiz gerekiyor. Eklediğimiz bu mesajlar sayesinde hangi committe ne değişiklik yaptığımızı öğrenebiliyoruz. Bunun için commit komutuna m parametresini verip çift tırnaklar arasında commit mesajımızı yazıyoruz. İsterseniz canlı bir örnek üzerinden gidelim. Boş bir çalışma dizininde önce git init komutumuzu çalıştıralım. Şimdi index.html adında bir dosya ekleyelim ve içerisinde iskeletimizi oluşturalım.
Bu şekilde iskeletimizi oluşturduktan sonra şimdi bu index.html dosyamızı Git’e ekleyebiliriz. Git’e eklemek için ne yapmanız gerektiğini biliyorsunuz, eğer aklınızda değilse önceki yazıları yeteri kadar dikkatli okumamışsınız demektir. Gerçekten öğrenmek istiyorsanız dikkatli okumalısınız. Hatırlamayanlar önceki yazıya dönüp bakıp geri gelebilirler.
Dosyamızı …….. komutunu vererek Git’e ekledikten sonra aşağıdaki komutu verelim ve dosyamızdaki bu değişikliği kalıcı olarak Git veri tabanına ekleyelim.
git commit -m "index.html sayfasının iskeleti oluşturuldu."
Bu komutu verdikten sonra şuna benzer bir sonuçla karşılaşmış olmanız gerekiyor.
Gördüğünüz gibi bize commitimiz ve değişiklikler hakkında birtakım bilgiler verdi. 1 dosyanın değiştirildiğini ve toplamda 9 satır ekleme işlemi yapıldığını söylüyor. Şimdiye kadar her şey iyi. İsterseniz bu dosyamızın durumuna bakmak için status komutunu verelim ve bir kontrol edelim. Şu anda ne durumdayız.
Gördüğünüz üzere commit edilecek hiçbir değişiklik olmadığını ve çalışma ağacımızın temiz olduğunu söylüyor. Şimdi size göstermek istediğim önemli bir mesele var. Şimdi dosyamızı tekrar açalım ve title etiketinin arasındaki ‘Document Title’ ifadesini ‘Git Öğreniyorum’ şeklinde değiştirelim.
Az önce git status komutunu verdiğimizde hiçbir şey göremiyorduk, şimdi başka hiçbir işlem yapmadan tekrar git status komutunu verelim ve çıktısına bakalım.
index.html dosyamız hala tracked dosyalar içerisinde ve sol tarafında bir modified ibaresi var. Önceki yazımızla bir bağlantı kuralım isterseniz ve şu diyagramı bir tekrar kafamızda canlandıralım.
Kaynak: https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository
Hatırlarsanız dosyamız staged hale geldikten sonra bu dosyayı commit ettiğimizde unmodified hale geldiğini söylemiştik. Dosyamız unmodified olduğu için commit ettikten hemen sonra git status komutunu verdiğimiz zaman herhangi bir şekilde karşımıza çıkmadı. Daha sonra dosyamızı tekrar düzenlediğimiz için modified kategorisine geçti ve git status komutunu verdiğimizde tekrar görünmeye başladı. Önceki yazıda bahsettiğim bir konuya şimdi daha canlı örnek vermenin öğrenme sürecine yardımcı olacağını düşündüm. Diyagramın kafanızda daha canlı bir hale geldiğini umarak yazıma devam ediyorum.
Dosyamız modified hale geldiğine göre şimdi bu dosyamızı tekrar commite hazır hale getirebiliriz. Bu dosyamızı commit etmek için staged hale getirmemiz gerekiyor. Bunun için de tek yapmamız gereken şey dosyamızı tekrar Git’e eklemek. Dosyamızı tekrar Git’e ekleyelim. Dosyamızı eklediysek eğer, bu dosyamız şu anda staged, yani commite hazır durumda demektir. Hemen son kez status komutu verip kontrol edelim.
Gördüğünüz gibi commit edilecek değişiklikler adı altında geldi dosyamız. Dosyamızı tekrar stage’e aldığımıza göre bu yazıyı burda bitirebiliriz.
Bu yazıda commitin ne olduğundan ve nasıl commit işlemi yapabileceğimizden bahsettim. Git’i aktif olarak kullanabilmek için öğrenmeniz gereken birkaç mesele daha kaldı. Bunları da öğrendikten sonra her şey yerine oturmaya başlayacaktır. Bir sonraki yazıda da muhtemelen aldığımız commitleri nasıl listeleyeceğimizi anlatacağım.
Şöyle bir örnek vermek istiyorum. Diyelim ki projenizi geliştirirken bir yer patladı veya önceden yazdığınız bir kısım, şimdi eklemek istediğiniz bir özellikle ters düştü. Bu durumda dönüp onlarca dosyadan yüzlerce satırı silmekle uğraşmanız gerekecektir. İşte bu durumda aldığımız commitler bizim hayatımızı kurtaracaktır. Git sayesinde istediğimiz zaman istediğimiz commite geri dönebiliriz. Projemiz bugün patlasa, biz dün aldığımız commite veya geçen ay aldığımız commite veya projenin çalışan son haline geri dönebiliriz. Commit dediğimiz olay bu işe yarıyor.
Bitmedi, 3 kavanoz bal alana… Sadece şakaydı ama gerçekten commitin olayı bu kadar değil. Bir de şöyle bir senaryo yazalım. Diyelim ki biz projede birkaç değişiklik yaptık ve bu değişiklikleri takım arkadaşımız kendi cihazına çekmek istiyor. Bu durumda biz projemizin bir commitini alıp sunucumuza yüklüyoruz (push ediyoruz / bu işlemden daha sonraki yazılarda bahsedeceğim). Takım arkadaşımız da projeyi bu sunucudan çekip kendi cihazında geliştirmeye devam edebiliyor. Anlayacağınız, projemizi sunucuya push etmeden önce commit etmemiz gerekiyor.
Kullandıkça zaten bütün yaptığımız işlemleri daha da iyi anlayacaksınız. Şimdilik bu iki örnek aklınızda kalsın yeter. Şimdi isterseniz nasıl Git’e eklediğimiz dosyaları commit edebileceğimizi öğrenelim. Tek yapmamız gereken şey şu komutu vermek:
git commit
Evet, bu kadar. Bu komutu verdiğimiz zaman Git’e eklemiş olduğumuz dosyalar kalıcı olarak git veri tabanına yazılıyor ve tracked files altında anlattığımız unmodified dosya haline bürünüyor.
Peki aldığımız hangi commitin ne olduğunu nasıl anlayacağız ? Bunun için commitlerimize mesajlar eklememiz gerekiyor. Eklediğimiz bu mesajlar sayesinde hangi committe ne değişiklik yaptığımızı öğrenebiliyoruz. Bunun için commit komutuna m parametresini verip çift tırnaklar arasında commit mesajımızı yazıyoruz. İsterseniz canlı bir örnek üzerinden gidelim. Boş bir çalışma dizininde önce git init komutumuzu çalıştıralım. Şimdi index.html adında bir dosya ekleyelim ve içerisinde iskeletimizi oluşturalım.
Bu şekilde iskeletimizi oluşturduktan sonra şimdi bu index.html dosyamızı Git’e ekleyebiliriz. Git’e eklemek için ne yapmanız gerektiğini biliyorsunuz, eğer aklınızda değilse önceki yazıları yeteri kadar dikkatli okumamışsınız demektir. Gerçekten öğrenmek istiyorsanız dikkatli okumalısınız. Hatırlamayanlar önceki yazıya dönüp bakıp geri gelebilirler.
Dosyamızı …….. komutunu vererek Git’e ekledikten sonra aşağıdaki komutu verelim ve dosyamızdaki bu değişikliği kalıcı olarak Git veri tabanına ekleyelim.
git commit -m "index.html sayfasının iskeleti oluşturuldu."
Bu komutu verdikten sonra şuna benzer bir sonuçla karşılaşmış olmanız gerekiyor.

Gördüğünüz gibi bize commitimiz ve değişiklikler hakkında birtakım bilgiler verdi. 1 dosyanın değiştirildiğini ve toplamda 9 satır ekleme işlemi yapıldığını söylüyor. Şimdiye kadar her şey iyi. İsterseniz bu dosyamızın durumuna bakmak için status komutunu verelim ve bir kontrol edelim. Şu anda ne durumdayız.

Gördüğünüz üzere commit edilecek hiçbir değişiklik olmadığını ve çalışma ağacımızın temiz olduğunu söylüyor. Şimdi size göstermek istediğim önemli bir mesele var. Şimdi dosyamızı tekrar açalım ve title etiketinin arasındaki ‘Document Title’ ifadesini ‘Git Öğreniyorum’ şeklinde değiştirelim.
Az önce git status komutunu verdiğimizde hiçbir şey göremiyorduk, şimdi başka hiçbir işlem yapmadan tekrar git status komutunu verelim ve çıktısına bakalım.

index.html dosyamız hala tracked dosyalar içerisinde ve sol tarafında bir modified ibaresi var. Önceki yazımızla bir bağlantı kuralım isterseniz ve şu diyagramı bir tekrar kafamızda canlandıralım.

Kaynak: https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository
Hatırlarsanız dosyamız staged hale geldikten sonra bu dosyayı commit ettiğimizde unmodified hale geldiğini söylemiştik. Dosyamız unmodified olduğu için commit ettikten hemen sonra git status komutunu verdiğimiz zaman herhangi bir şekilde karşımıza çıkmadı. Daha sonra dosyamızı tekrar düzenlediğimiz için modified kategorisine geçti ve git status komutunu verdiğimizde tekrar görünmeye başladı. Önceki yazıda bahsettiğim bir konuya şimdi daha canlı örnek vermenin öğrenme sürecine yardımcı olacağını düşündüm. Diyagramın kafanızda daha canlı bir hale geldiğini umarak yazıma devam ediyorum.
Dosyamız modified hale geldiğine göre şimdi bu dosyamızı tekrar commite hazır hale getirebiliriz. Bu dosyamızı commit etmek için staged hale getirmemiz gerekiyor. Bunun için de tek yapmamız gereken şey dosyamızı tekrar Git’e eklemek. Dosyamızı tekrar Git’e ekleyelim. Dosyamızı eklediysek eğer, bu dosyamız şu anda staged, yani commite hazır durumda demektir. Hemen son kez status komutu verip kontrol edelim.

Gördüğünüz gibi commit edilecek değişiklikler adı altında geldi dosyamız. Dosyamızı tekrar stage’e aldığımıza göre bu yazıyı burda bitirebiliriz.
Bu yazıda commitin ne olduğundan ve nasıl commit işlemi yapabileceğimizden bahsettim. Git’i aktif olarak kullanabilmek için öğrenmeniz gereken birkaç mesele daha kaldı. Bunları da öğrendikten sonra her şey yerine oturmaya başlayacaktır. Bir sonraki yazıda da muhtemelen aldığımız commitleri nasıl listeleyeceğimizi anlatacağım.