Commit Ne Demek, Git Neyi Kayıt Altına Alıyor?

Haberci

SEO UZMANI
Yönetici
Katılım
21 May 2023
Mesajlar
710
Tepki
17
Puan
18
948




Dosyayı kaydetmekle projeyi kaydetmek aynı şey değil. Sürüm kontrolünde ikincisinin ayrı bir adı var: işleme. Ve bu adım, sanılanın aksine diskteki dosyaları değil, önce hazırlanmış bir ara alanı esas alıyor.

Bu yazı işlemenin ne kaydettiğini, hangi içeriğin dahil olduğunu, kaydın geçmişte nereye bağlandığını ve içeriğin komuta hangi yollarla verilebildiğini Git'in resmî komut belgesine bakarak topluyor.

İşleme neyi kaydediyor?​


Git'in işleme komutu belgesi tanımı doğrudan veriyor: komut, dizinin güncel içeriğini ve değişiklikleri anlatan günlük mesajını içeren yeni bir kayıt oluşturuyor.

Buradaki "dizin" ifadesi kritik. Kaydedilen şey çalışma klasöründeki her şey değil, o an dizine alınmış içerik. Bu ayrım, sürüm kontrolünü bir yedekleme aracından ayıran şeylerden biri.

  • Çalışma ağacı: Diskte üzerinde çalıştığınız dosyalar.
  • Dizin: Kayda girmek üzere hazırlanmış içerik.
  • İşleme: Dizinin o anki hâlinin kalıcı kaydı.

Kayıt geçmişte nereye bağlanıyor?​


Belge bağlantıyı da tanımlıyor: yeni kayıt, doğrudan HEAD'in çocuğu oluyor. HEAD ise genellikle geçerli dalın ucunu gösteriyor.

Aynı cümle sonucu da söylüyor: dal, yeni kaydı gösterecek şekilde güncelleniyor. Yani her işleme, dalın ucunu bir adım ileri taşıyor.

Belge bir istisna daha anıyor: çalışma ağacıyla ilişkili bir dal yoksa HEAD ayrık hâle geliyor. Bu durumda kayıt oluşuyor ama onu gösteren bir dal bulunmuyor.

Püf nokta' Alıntı:
Kaydın gideceği yer HEAD'in gösterdiği noktadır; hangi dalda olduğunuzu bilmeden işleme yapmak risklidir.

İçerik komuta nasıl veriliyor?​


Belge birden çok yol sayıyor. Birincisi, işleme komutundan önce değişiklikleri dizine aşamalı olarak eklemek. Metin burada sık atlanan bir noktayı özellikle not düşüyor: değiştirilmiş dosyaların bile eklenmesi gerekiyor.

İkinci yol silme tarafında: dosyaları çalışma ağacından ve dizinden kaldıran komut, yine işlemeden önce çalıştırılıyor.

Üçüncü yol dosyaları doğrudan komuta argüman olarak vermek. Belge bu durumda davranışın değiştiğini belirtiyor: işleme, dizine alınmış değişiklikleri yok sayıyor ve bunun yerine listelenen dosyaların o anki içeriğini kaydediyor.

Dizin neden ayrı bir aşama?​


Çalışma ağacı ile kayıt arasında bir ara durak olması, ilk bakışta fazladan bir adım gibi görünüyor. Ama bu durak olmadan, kaydın içeriğini seçme imkânı da olmazdı.

Belgenin "değiştirilmiş dosyaların bile eklenmesi gerekiyor" notu tam bu yüzden var. Araç, dosyayı değiştirdiğinizi görüyor ama sizin adınıza karar vermiyor; hangi değişikliğin kayda gireceğini siz bildiriyorsunuz.

Bu tasarım, yarım kalmış bir işi diskte tutup yalnız biten kısmı kaydetmeyi mümkün kılıyor. Kayıt geçmişi de böylece diskteki anlık kargaşayı değil, tamamlanmış adımları yansıtıyor.

Üç yolun farkı pratikte ne?​


Aşamalı ekleme, üzerinde çalışırken biriktirmeye yarıyor: bir dosyayı bitirdikçe dizine alıyorsunuz. Kayıt anında dizinde ne varsa o giriyor.

Dosya adını doğrudan komuta vermek ise farklı bir davranış üretiyor. Belgeye göre bu durumda dizindeki hazırlık dikkate alınmıyor ve listelenen dosyaların o anki hâli kaydediliyor. Yani iki yolu karıştırmak, beklemediğiniz bir içeriğin kaydedilmesine yol açabiliyor.

Bu ayrım neden var?​


Dizin, hangi değişikliğin bu kayda gireceğini seçme imkânı veriyor. Aynı anda üç ayrı işe dokunmuş olabilirsiniz; hepsini tek kayda sıkıştırmak yerine ilgili olanları ayırmak mümkün.

Bunun pratik faydası geçmişi okurken ortaya çıkıyor. Her kayıt tek bir işi anlatıyorsa, sonradan bir değişikliği geri almak da o kaydı bulup çıkarmak kadar kolay oluyor.

Hatalı bir kaydı geçmişten çıkarmak gerektiğinde hangi komutun ne yaptığını geri alma yazımızda karşılaştırmıştık.

Mesaj neden zorunlu?​


Tanımın içinde günlük mesajı da geçiyor: kayıt, değişiklikleri anlatan bir mesajla birlikte oluşturuluyor. Mesaj süs değil, kaydın kendisinin parçası.

Geçmişi sonradan inceleyen kişi için tek bağlam kaynağı bu metin. Kod ne yaptığını gösteriyor; mesaj ise neden yapıldığını, ki bu bilgi kodun içinde durmuyor.

Komutların hangi sırayla kullanıldığını ve dizinin akışın neresine oturduğunu git komutları yazımızda toplamıştık.

Dal ve işleme ilişkisi​


Her işleme bir dalın ucunu ilerlettiği için, iki kavram birbirine bağlı. Hattın nasıl kurulduğunu ve ucun ne anlama geldiğini GitHub yazımızda ele almıştık.

Kayıtlar birikip hatlar ayrıldıkça, bir noktada birleştirme gündeme geliyor. O adımın ürettiği kayıt da bir işleme, farkı iki ana kaydı birden göstermesi.

Sık Sorulan Sorular​


Commit ne demek?
Dizinin güncel içeriğini ve değişiklikleri anlatan günlük mesajını içeren yeni bir kayıt oluşturmak.

Diskteki her değişiklik kaydediliyor mu?
Hayır; kayda giren şey dizine alınmış içerik. Değiştirilmiş dosyaların bile eklenmesi gerekiyor.

Kayıt nereye bağlanıyor?
HEAD'in doğrudan çocuğu oluyor ve dal yeni kaydı gösterecek biçimde güncelleniyor.

Dosya adı vererek işleme yapılırsa ne olur?
Belgeye göre dizine alınmış değişiklikler yok sayılıyor, listelenen dosyaların o anki içeriği kaydediliyor.

HEAD ayrıkken işleme yapılabilir mi?
Yapılabiliyor; ancak çalışma ağacıyla ilişkili bir dal olmadığı için kayıt bir dal tarafından gösterilmiyor.

Özetle​


İşleme, diskteki her şeyi değil dizine alınmış içeriği kaydeden bir adım ve kayıt HEAD'in çocuğu olarak geçmişe bağlanıyor. Dal, yeni kaydı gösterecek şekilde ilerliyor. İçerik komuta üç ayrı yolla verilebiliyor ve dosya adı verildiğinde dizindeki hazırlık yok sayılıyor. Günlük mesajı ise kaydın ayrılmaz parçası; geçmişi okuyan için tek bağlam kaynağı.

Kayıtlarınız tek bir işi mi anlatıyor, yoksa gün sonunda her şeyi tek seferde mi kaydediyorsunuz?

Güncelleme: 2 Eylül 2026. Git'in resmî git-commit komut belgesi kontrol edildi.



Dijital Dünyanıza Yön Veren Pusula
 

Ekli dosyalar

  • banner_20.jpg
    banner_20.jpg
    5.2 KB · Görüntüleme: 0
Geri
Üst