Berk Akademi
Ana Sayfa
ÖZEL KODLAMA DERSLERİ
Yazılım Özel Ders
Tüm birebir programlara genel bakış
Python Yazılım Kursu
Sıfırdan ileri seviyeye birebir Python
Java Yazılım Kursu
OOP odaklı birebir Java eğitimi
AP Computer Science Principles
AP CSP sınav hazırlığı
GRUP DERSLERİ
Python & Django Masterclass
SINIRLI KONTENJAN
Java & Spring Boot Masterclass
SINIRLI KONTENJAN
C# .NET Masterclass
SINIRLI KONTENJAN
VİDEO DERSLER
Sıfırdan Temel Python Kursu
Kendi Hızında Öğren
ÜCRETSİZ
Seviye Testi
Ücretsiz — Python, Java, algoritma seviye testleri
Kariyerini Keşfet
Sertifika Doğrula
Belge numarası ve soyad ile doğrulama

Takım Projelerinde Anlaşılır Git Commit Mesajı Nasıl Yazılır?

Yazar: Berk Keskin 29.08.2026 ~13 dk okuma 1 Okunma
takim-projelerinde-anlasilir-git-commit-mesaji-yazma

İyi Bir Commit Mesajının Anatomisi: Özet Satırı ve Açıklama Gövdesi

Aşağıda makalenin ilk parçasını tam metin olarak sunuyorum:

Anlaşılır bir git commit mesajı yazmanın sırrı, değişikliği iki katmanda anlatmaktır: kısa bir özet satırı ile "ne yapıldığını", gerekiyorsa bir açıklama gövdesiyle de "neden yapıldığını" belirtmek. Takım projelerinde commit mesajı yazma alışkanlığı, kodun kendisi kadar önemlidir; çünkü altı ay sonra o satıra bakan bir arkadaşınız (ya da gelecekteki siz) kararın arkasındaki gerekçeyi ancak mesajdan okuyabilir. Bu yazıda atomik commit mantığından kötü-iyi örnek karşılaştırmalarına, code review'de okunabilirlikten staj başvurusunda commit geçmişinin nasıl değerlendirildiğine kadar pratik bir yol haritası bulacaksınız.

İyi Bir Commit Mesajının Anatomisi: Özet Satırı ve Açıklama Gövdesi

Her commit mesajı temelde iki parçadan oluşur: kısa bir özet satırı ve gerektiğinde bunu takip eden boş bir satırdan sonra gelen açıklama gövdesi. Özet satırı, git log çıktısında, pull request listelerinde ve code review ekranlarında tek satır olarak görüneceği için kısa, net ve tek bir cümlede anlaşılır olmalıdır. Genelde 50 karakter civarında tutulması önerilir çünkü birçok terminal ve arayüz uzun satırları kırpar; kırpılan bir mesaj okuyucuya yarım bilgi verir.

Özet satırının emir kipiyle yazılması ("kullanıcı listesini sayfalama ile güncelle" gibi) pratikte tercih edilir, çünkü git'in kendi ürettiği otomatik mesajlar (merge, revert gibi) da aynı kipte yazılır ve bu tutarlılık git log geçmişini okurken göze daha az yük bindirir. "Güncellendi" ya da "düzeltiliyor" gibi geçmiş veya şimdiki zaman kipleri yerine doğrudan eylemi belirten bir ifade tercih etmek, mesajın komut satırı estetiğine uymasını sağlar.

Açıklama gövdesi her commit için zorunlu değildir; basit ve kendini açıklayan değişikliklerde tek satırlık özet yeterlidir. Ancak değişiklik karmaşıksa, bir hata düzeltmesi belirli bir sebebe dayanıyorsa ya da alınan kararın alternatifleri varsa, gövde bu "neden"i taşımalıdır. Aşağıda önce basit bir tek satırlık commit, ardından gövdesi olan çok satırlı bir örnek yer alıyor:

$ git commit -m "Sepet toplamına kdv hesaplamasını ekle"

Daha karmaşık bir değişiklikte terminalde açılan mesaj editörü şu şekilde görünebilir:

Sipariş onayında stok kontrolünü senkron hale getir

Önceki asenkron kontrol, aynı anda gelen iki siparişte
stok miktarının negatife düşmesine izin veriyordu.
Kontrolü veritabanı seviyesinde kilitleyerek bu yarış
durumunu (race condition) ortadan kaldırdık.

İlgili hata kaydı: #482

Bu iki örnek arasındaki fark, karmaşıklığın mesaja da yansımasıdır: birinci durumda tek satır yeterliyken ikinci durumda gövde, kararın arkasındaki teknik gerekçeyi ve ilişkili hata kaydını okuyucuya taşımaktadır.

'Ne Yapıldı + Neden Yapıldı' Kalıbı: Sadece 'Ne' Yazmak Neden Yetersiz

"update", "fix bug", "değişiklikler" gibi mesajlar git log ekranında sık karşılaşılan ama neredeyse hiçbir bilgi taşımayan ifadelerdir. Bu tür mesajlar yalnızca yüzeysel bir "ne" bile vermez; hangi dosyanın, hangi işlevin güncellendiği belirsiz kalır ve "neden" tamamen kaybolur. Bir hafta sonra aynı dosyada üçüncü bir "fix bug" mesajı gördüğünüzde, hangi hatanın düzeltildiğini anlamak için commit'in diff'ini satır satır okumak zorunda kalırsınız; bu da takımın zamanını tüketir.

Doğru kalıp basittir: özet satırında kısa ve net "ne" yer alır, gövdede ise gerekiyorsa "neden" açıklanır. Örneğin "update" yerine "Kullanıcı formundaki e-posta doğrulama regex'ini RFC 5322 uyumlu hale getir" yazmak, hem değişikliğin kapsamını hem de amacını tek satırda netleştirir. Gövde eklenirse, bu regex değişikliğinin hangi hatalı e-posta formatlarını engellediği de belirtilebilir.

Bu kalıbın asıl değeri zaman geçtikçe ortaya çıkar. Altı ay sonra o koda dönen bir geliştirici -bazen bu kişi projenin ilk yazarının ta kendisidir- "neden böyle bir karar alınmış" sorusunun cevabını commit mesajından okuyabildiğinde, kodu tekrar tersine mühendislik yapmak zorunda kalmaz. Bu, hem git blame ile bir satırın geçmişine bakıldığında hem de eski bir hatanın kök nedenini ararken saatler kazandıran bir alışkanlıktır.

Bu kalıbı gerçek projeler üzerinde uygulamalı olarak pekiştirmek isteyenler için, küçük ama düzenli commit atma disiplinini bir mentor eşliğinde kurmak süreci hızlandırır. Berk Akademi'nin online yazılım kursu içeriklerinde bu tür ekip içi disiplinler, gerçek proje senaryoları üzerinden adım adım işlenir. Böylece yalnızca "doğru mesaj nasıl yazılır" bilgisini değil, bu alışkanlığı bir refleks haline getirmeyi de öğrenmiş olursunuz.

Atomik Commit: Bir Commit, Bir Amaç

Atomik Commit: Bir Commit, Bir Amaç

Atomik commit, her commit'in yalnızca tek bir mantıksal değişikliğe hizmet etmesi ilkesidir. Bir commit'te hem bir hata düzeltilip hem yeni bir özellik eklenip hem de kod biçimlendirmesi (formatting) değiştirilirse, bu commit artık tek bir amaç taşımaz; okuyucu diff'in hangi kısmının hangi niyete hizmet ettiğini ayıklamak zorunda kalır.

Birden fazla değişikliği tek commit'e sıkıştırmanın en somut maliyeti code review sırasında ortaya çıkar. Bir reviewer, karışık bir commit'te hem stil değişikliklerini hem mantıksal değişiklikleri aynı anda değerlendirmek zorunda kalır ve gerçek riskli kısmı gözden kaçırabilir. Aynı sorun geri alma (revert) işleminde daha da büyür: yalnızca hatalı özelliği geri almak istediğinizde, aynı commit içindeki masum bir düzeltmeyi de kaybedersiniz, çünkü git revert commit'i bir bütün olarak geri çevirir.

Küçük ve odaklı commit'lerin bir yan faydası da commit mesajını kendiliğinden netleştirmesidir. Tek bir amaca hizmet eden bir değişikliği özetlemek kolaydır; "ne" tek cümleye sığar ve gerekirse gövdede tek bir "neden" anlatılır. Buna karşılık beş farklı işi birden yapan bir commit'e tek satırlık anlamlı bir başlık bulmak neredeyse imkânsızdır, çünkü mesaj da değişiklik gibi dağınıklaşır. Bu yüzden atomik commit alışkanlığı, iyi commit mesajı yazmanın ön koşullarından biri olarak düşünülmelidir; mesaj kalitesi genellikle commit'in kapsamının bir yansımasıdır.

Kötü ve İyi Commit Mesajı Örnekleri Yan Yana

Bir commit mesajının kalitesini anlamanın en hızlı yolu, sahada gerçekten karşılaşılan kötü örnekleri iyi karşılıklarıyla yan yana koymaktır. Aşağıdaki tablo, günlük hayatta sık görülen belirsiz mesajları ve bunların neden iz sürülemezlik sorunu yarattığını gösteriyor.

Kötü Örnek Sorunu İyi Örnek
fix bug Hangi hata, hangi dosyada, nasıl düzeltildi belli değil; altı ay sonra kimse bu commit'i arayarak bulamaz Sepet toplamının KDV hesaplamasında yuvarlama hatasını düzelt
update Neyin güncellendiği (kod, konfigürasyon, bağımlılık, dokümantasyon) belirtilmemiş, git log'da tek başına anlam taşımıyor Kullanıcı doğrulama servisindeki JWT süresini 24 saate çıkar
asdf Hiçbir bilgi içermiyor; muhtemelen commit atma alışkanlığı hiç kazanılmamış, geri dönüşte tamamen diff'e bakmak gerekiyor Geçici debug loglarını kaldır
çalışıyor artık "Ne çalışıyor" ve "önceden neden çalışmıyordu" bilgisi yok; sorunun kök nedeni kayıp gidiyor Ödeme API'sindeki null referans hatasını giderdim, sipariş oluşturma artık başarılı
küçük düzenlemeler "Küçük" öznel bir ifade; reviewer değişikliğin kapsamını mesajdan çıkaramıyor, diff'i baştan sona okumak zorunda kalıyor Fonksiyon isimlerini camelCase standardına göre yeniden adlandır

Tablodaki kötü örneklerin ortak noktası, hepsinin okuyucuyu diff'e mahkûm etmesidir. İyi örneklerde ise mesajın kendisi bağlamı taşıdığı için, kod değişikliğine bakmadan bile ne olduğu anlaşılıyor. Bu fark, küçük bir kişisel projede önemsiz görünse de takım çalışmasında birikince ciddi zaman kaybına dönüşüyor.

Commit Mesajı Yazarken İzlenecek Adımlar

Commit Mesajı Yazarken İzlenecek Adımlar

Commit mesajı yazmak, kod yazmaktan sonra gelen ikincil bir iş gibi görülse de aslında ayrı bir disiplin gerektirir. Aşağıdaki adımlar, her commit öncesi birkaç saniye içinde uygulanabilecek pratik bir kontrol listesidir.

  1. Değişikliği gözden geçir: git diff veya git status ile hangi dosyaların ve satırların değiştiğine bak; ne yaptığını tam olarak hatırlamadan mesaj yazma.
  2. Tek amaca indirge: Eğer diff içinde birbirinden bağımsız iki değişiklik görüyorsan (örneğin bir bug fix ve bir stil düzenlemesi), bunları ayrı commit'lere böl.
  3. Özet cümlesini kur: Emir kipiyle, kısa ve net bir cümleyle "ne yapıldığını" özetle; örneğin "Kullanıcı formundaki e-posta doğrulamasını sıkılaştır."
  4. Gerekiyorsa gövde ekle: Değişikliğin nedeni, öncesindeki sorun veya alınan karar tek satırla anlatılamıyorsa boş satırdan sonra birkaç cümlelik açıklama ekle.
  5. "Başka biri anlar mı?" testi uygula: Mesajı yazdıktan sonra bir kez daha oku ve kendine sor: bu projeye hiç bakmamış biri, sadece bu satırı okuyarak neyin değiştiğini anlar mı?
  6. Commit'i gönder ve geçmişe bir daha bak: git log --oneline ile son birkaç commit'i tara; mesajın diğerleriyle tutarlı bir dil ve format kullandığından emin ol.

Bu adımlar ilk başta zaman kaybettiriyormuş gibi hissettirse de aslında birkaç saniyelik bir alışkanlığa dönüşür. Zamanla mesaj yazmak, kod yazmanın doğal bir parçası hâline gelir ve ayrı bir efor gibi hissettirmez.

Takım İçi Okunabilirlik: git log, Code Review ve blame ile Sorumlu Bulma

git log komutu, bir projenin zaman içindeki hikâyesini anlatan bir defter gibidir. Anlaşılır commit mesajlarıyla dolu bir geçmişte, bir geliştirici belirli bir özelliğin ne zaman ve neden eklendiğini saniyeler içinde bulabilirken; belirsiz mesajlarla dolu bir geçmişte aynı bilgiye ulaşmak için tek tek diff okumak gerekir. Özellikle uzun soluklu takım projelerinde bu fark, haftalarca süren teknik borç araştırmalarını birkaç dakikaya indirebilir.

Code review sürecinde de commit mesajının rolü küçümsenmemeli. Bir reviewer, pull request'i incelerken önce commit mesajlarına bakar ve değişikliğin amacını buradan çıkarmaya çalışır. Mesaj net değilse reviewer değişikliğin arkasındaki niyeti anlamadan kod satırlarını yorumlamak zorunda kalır; bu da hem review süresini uzatır hem de yanlış onaylara kod kalitesini düşürebilir. Anlaşılır bir özet satırı, reviewer'a "bu değişiklik neyi çözmeye çalışıyor" sorusunun cevabını daha kod okumadan verir.

git blame ise bir satırın kim tarafından ve hangi commit'te değiştirildiğini gösteren, hata ayıklamada sıkça başvurulan bir araçtır. Ancak blame'in gerçek değeri, işaret ettiği commit'in mesajından geçer. Blame ile bir satıra ulaşıp karşınıza "fix" yazan bir mesaj çıkarsa, o satırın neden o hâle geldiğini anlamak için yine ilgili kişiye sormak ya da eski diff'leri kazımak zorunda kalırsınız. Oysa mesaj "Stok kontrolü sırasında negatif değerleri engelle" gibi nedenini açıklıyorsa, blame tek başına yeterli bir açıklama sunar.

Bu üç araç birlikte düşünüldüğünde, commit mesajı disiplini bireysel bir tercih olmaktan çıkıp takımın ortak hafızasının parçası hâline gelir. Bu alışkanlığı gerçek proje senaryoları üzerinden birebir geri bildirimle pekiştirmek isteyenler için 1-1 özel ders kapsamında kod inceleme ve git disiplini konuları uygulamalı olarak ele alınabilir.

Staj ve İş Başvurusunda Commit Geçmişinin Değerlendirilmesi

Bir GitHub deposu, işe alım sürecinde CV'den daha fazla şey anlatır; çünkü CV'de yazdığın "takım çalışmasına yatkınım" gibi ifadelerin aksine, commit geçmişi bunu kanıtlar ya da çürütür. Bir teknik mülakatçı veya stajyer değerlendirme komitesi projenin commit geçmişini açtığında aslında iki şeyi birden test eder: kodun kendisini değil, o kodun nasıl bir süreçle ortaya çıktığını. Düzenli, açıklayıcı ve gerekçeli commit mesajları, adayın sadece "çalışan kod" değil, sürdürülebilir ve takım uyumlu kod üretebildiğinin dolaylı ama güçlü bir kanıtıdır.

Bunun tersi de aynı derecede etkilidir. Bir depoda art arda "asdf", "test", "wip", "son hali", "deneme2" gibi commit mesajları görüldüğünde, bu genellikle üç şeyden birine işaret eder: adayın acele ettiği, sürecini belgelemeye önem vermediği ya da Git'i sadece bir yedekleme aracı gibi kullandığı izlenimi. Bu izlenim teknik yetkinlikle ilgili değildir ama disiplin ve iletişim becerisiyle doğrudan ilişkilendirilir; oysa bir yazılımcının gerçek işteki değeri büyük ölçüde bu ikisine dayanır. Portföy projesi olarak paylaşılan bir depoda tek bir "son hali" commit'i bile, aksi güçlü olan bir projenin izlenimini zedeleyebilir.

Başvuru öncesinde yapılabilecek en pratik adım, mevcut commit alışkanlığını dışarıdan bir gözle denetlemektir. Kendi deponu açıp git log --oneline çıktısına bir yabancı gibi bakmayı dene: her satırı okuduğunda değişikliğin ne olduğunu anlıyor musun, yoksa bağlamı hatırlaman mı gerekiyor? Eğer ikincisi geçerliyse, bu commit disiplinini gözden geçirmen gerektiğinin işaretidir. Bu noktada sadece Git alışkanlıklarını değil, genel kod okuryazarlığını da ölçmek faydalı olur; yazılım bilgini ölçen ücretsiz test ile hem teorik hem pratik seviyeni kısa sürede görebilir, başvuru öncesi hangi konularda eksik kaldığını netleştirebilirsin. Böylece portföyünü sadece kod kalitesiyle değil, süreç kalitesiyle de güçlendirmiş olursun.

İyi Commit Mesajı Alışkanlığını Kalıcı Hale Getirmenin Yolları

İyi bir commit mesajı yazma becerisi, bir kerede öğrenilip unutulan bir kural listesi değil, tekrarla kalıcılaşan bir alışkanlıktır. Bunu netleştirmek için, gerçekten işe yarayan bir commit mesajının taşıdığı ortak özellikleri toparlamak faydalı olur:

  • Açıklayıcı: Değişikliğin ne olduğunu, projeye hiç bakmamış biri bile okuduğunda anlayabilir.
  • Tutarlı: Aynı depoda, aynı formatı ve aynı dil tercihini (Türkçe veya İngilizce) baştan sona korur.
  • Emir kipiyle yazılmış: "Ekledim" yerine "ekle", "düzeltti" yerine "düzelt" gibi doğrudan bir üslup kullanır.
  • Gerekçe içeren: Sadece yapılanı değil, neden yapıldığını da açık veya gövde metninde belirtir.
  • Kısa tutulan özet satırı: Başlık tek bakışta okunacak kadar öz kalır, ayrıntı gövdeye bırakılır.

Bu özellikleri bir kerede büyük bir projede uygulamaya çalışmak yerine, küçük ve kişisel projelerde bilinçli tekrarla oturtmak çok daha gerçekçi bir yoldur. Örneğin bir hafta boyunca yazdığın her commit mesajını yazmadan önce iki saniye durup "bu satırı bir yıl sonra okuyan biri anlar mı?" diye sorman, zamanla otomatikleşen bir refleks haline gelir. Küçük bir Python betiği üzerinde bile her adımı ayrı ayrı commit'leyip özenli mesajlar yazmak, büyük bir takım projesine geçtiğinde seni hazır bulur; çünkü alışkanlık, proje büyüklüğüyle değil tekrar sayısıyla oluşur.

Commit mesajı disiplini aslında kodun kendisini ne kadar iyi anladığınla da doğrudan bağlantılıdır; bir değişikliği net cümlelerle özetleyemiyorsan, çoğu zaman o değişikliği tam olarak kavramamışsın demektir. Bu yüzden yazdığın kodun mantığını gerçekten içselleştirip içselleştirmediğini görmek için ara sıra kendini sınamak iyi bir alışkanlıktır; Python bilgi seviyeni ölçen test bu noktada hem eksik konularını hem de güçlü yönlerini net biçimde ortaya koyar. Sonuç olarak iyi commit mesajı yazmak, iyi kod yazmanın bir uzantısıdır; ikisi birlikte geliştiğinde ortaya hem teknik hem profesyonel olarak güven veren bir portföy çıkar.

Sık Sorulan Sorular

Commit mesajı Türkçe mi İngilizce mi yazılmalı?

Bunun tek bir doğrusu yoktur; asıl önemli olan takım içinde hangi dilin seçildiğinden bağımsız olarak tutarlı kalınmasıdır. Açık kaynak projelerde veya uluslararası bir ekipte çalışıyorsan İngilizce yaygın tercih edilir, tamamen yerel bir ekip projesindeysen Türkçe de gayet doğal bir seçimdir. Kritik olan, aynı depo içinde bir commit Türkçe bir diğeri İngilizce yazılarak karışıklık yaratılmamasıdır.

Commit mesajının özet satırı en fazla kaç karakter olmalı?

Yaygın kabul gören pratik, özet satırını yaklaşık 50 karakter civarında tutmaktır; bu sınır, mesajın git log gibi araçlarda tek satırda kesilmeden okunabilmesini sağlar. Daha uzun açıklamalar gerekiyorsa bunlar özet satırının altına, bir boş satır bırakılarak açıklama gövdesine yazılır.

Her küçük değişiklik için ayrı commit atmak gerekir mi?

Amaç her satır değişikliğinde ayrı commit atmak değil, birbirinden bağımsız amaçları ayrı commit'lerde tutmaktır. Bir hata düzeltmesiyle alakasız bir yeniden adlandırmayı aynı commit'te birleştirmemek, atomik commit mantığının özüdür; küçüklük değil, amaç bütünlüğü belirleyicidir.

Commit mesajını yanlış veya eksik yazdıysam sonradan düzeltebilir miyim?

Henüz paylaşılmamış, yani uzak depoya gönderilmemiş son commit'in mesajını değiştirmek mümkündür ve bu oldukça yaygın bir uygulamadır. Ancak commit zaten takım arkadaşlarıyla paylaşılmış bir uzak dala gönderildiyse, geçmişi değiştirmek diğer kişilerin çalışmasını bozabileceği için bu tür düzeltmeleri yapmadan önce takım içinde mutlaka konuşulması gerekir.

Conventional Commits gibi standart formatlar kullanmak zorunlu mu?

Zorunlu değildir; bu tür standart formatlar, özellikle otomatik sürüm numaralandırma veya değişiklik günlüğü üretmek isteyen büyük projelerde tercih edilen bir yapıdır ve genel olarak "tür(kapsam): açıklama" şeklinde bir başlık düzeni önerir. Küçük veya orta ölçekli bir takım projesinde bu formatı hiç kullanmadan da, sadece "ne yapıldı + neden yapıldı" kalıbına sadık kalarak son derece okunabilir bir commit geçmişi oluşturabilirsin; önemli olan format değil tutarlılıktır.

İşe alım sürecinde commit geçmişime gerçekten bakılır mı?

Her başvuru sürecinde birebir incelenmese de, özellikle teknik mülakat öncesi portföy projesi paylaşıldığında commit geçmişinin gözden geçirilmesi yaygın bir uygulamadır. Düzenli ve gerekçeli commit mesajları, teknik yetkinlik kadar çalışma disiplini hakkında da güçlü bir izlenim bıraktığı için bu geçmişi ihmal etmemek başvuru sürecinde fark yaratabilir.

Takım içinde commit mesajı kuralları nasıl belirlenmeli?

En sağlıklı yol, projeye başlamadan önce kısa bir yazılı kural seti üzerinde anlaşmaktır: dil tercihi, özet satırı uzunluğu, emir kipi kullanımı ve gerekirse bir ön ek sistemi. Bu kurallar ne kadar erken netleşirse, proje büyüdükçe commit geçmişinin okunabilirliği o kadar korunur ve sonradan "herkes kendi stilinde yazmış" karmaşasıyla uğraşılmaz.

Sonuç olarak anlaşılır bir commit mesajı yazmak, teknik bir detay değil, bir yazılımcının profesyonelliğinin doğrudan yansımasıdır; ne kadar iyi kod yazarsan yaz, o kodun hikâyesini anlatamıyorsan takım içindeki değerin eksik kalır. Bu alışkanlığı sağlam temeller üzerine oturtmak isteyenler için 1-1 özel Python dersleri, hem kod yazma hem de sürüm kontrolü disiplinini birlikte geliştirme fırsatı sunar.

Bu içeriğin üretilmesinde yapay zeka araçlarından destek alınmıştır.

İlgili Eğitimler

Berk Keskin — Yazılım Geliştirici ve Eğitmen
Yazar

Berk Keskin Kimdir?

Yazılıma 12 yaşında başladı; bugün öğrencinin seviyesine ve hedefine göre şekillenen sürdürülebilir öğrenme sistemleri tasarlıyor. 300'den fazla kişiye ezber değil, düşünerek kod yazmayı öğretti — Berk Akademi'de izlemeye değil üretmeye dayalı öğrenme kültürünü o kuruyor.

WhatsApp Hemen Ara