---
title: 'İşleme Mesajı Yazımı'
source: 'https://academia.sh/tr/kurslar/surum-kontrolune-giris/isleme-mesaji-yazimi'
course: 'Sürüm Kontrolüne Giriş'
language: tr
updated: '2026-08-17T18:10:47+00:00'
license: 'CC BY-SA 4.0'
---

# İşleme Mesajı Yazımı

Konu satırı, boş ayırıcı ve gövdeden oluşan mesaj yapısı; gerekçenin kaydedilmesi ve mesaj biçiminin araçlar tarafından nasıl kullanıldığı.

Üç işleme yazıldı ve üçünün de mesajı tek satırdı. Küçük değişikliklerde bu yeterlidir; ancak
bir düzeltmenin nedeni, denenip vazgeçilen seçenekler ya da bir tasarım kararının gerekçesi
tek satıra sığmaz. Bu ders mesajın yapısını tanımlar.

**İşleme mesajı (commit message)** biçimsel bir zorunluluk değil, tarihçenin okunabilirliğini belirleyen tek
serbest metin alanıdır. Bir satırın *ne* yaptığı koddan okunur; *neden* öyle yazıldığı yalnızca
mesajdan okunur.

## Mesajın Yapısı

Mesaj üç bölümden oluşur:

```
Konu satırı: değişikliğin özeti

Gövde: değişikliğin gerekçesi. Sorunun ne olduğu, neden bu çözümün
seçildiği, hangi seçeneklerin elendiği burada yazılır.

İkinci paragraf gerekirse eklenir.
```

Bölümleri ayıran şey **ilk boş satırdır** ve bu ayırıcı biçimsel bir kuraldır: araçlar ilk
satırı konu, boş satırdan sonrasını gövde olarak okur. Boş satır konmazsa metnin tamamı konu
sayılır ve özet listelerinde tek satıra sıkıştırılır.

Ayrımın araçlar tarafından nasıl kullanıldığı doğrudan görülebilir. `%s` konu satırını,
`%b` gövdeyi verir:

```bash
git log -1 --format='%s' 43370ca
```

```
Üç veri yapısı terimi ekle
```

```bash
git log -1 --format='%b' 43370ca
```

```
Ağaç, karma tablosu ve bağlı liste terimleri listede yoktu; bu terimler
sorulduğunda arama betiği boş çıktı veriyordu.

Karşılıklar Veri Yapıları kursunun sözlüğüyle aynı biçimde yazıldı.
```

## Konu Satırı

Konu satırı için dört kural yerleşmiştir:

1. **Emir kipinde yazılır.** "Terim listesini sırala", "Sıralandı" ya da "Terim listesini
   sıraladım" değil. Gerekçesi biçimseldir: araçların ürettiği mesajlar da emir kipindedir
   (`Revert "…"`, `Merge …`), böylece tarihçe tek bir dilbilgisi kipiyle okunur. Zihinsel
   testi şudur: konu satırı, "Uygulandığında bu işleme şunu yapar: …" cümlesini tamamlamalıdır.
2. **Elli karakter civarında tutulur.** Kesin bir sınır yoktur; ancak özet listelerinde ve
   dar arayüzlerde satır kırpılır. Elli karaktere sığmayan bir konu satırı çoğu zaman
   işlemenin birden çok iş içerdiğinin göstergesidir.
3. **Nokta ile bitirilmez.** Başlık işlevi görür, cümle değildir.
4. **Neyin değiştiğini söyler, nasılını değil.** Ayrıntı gövdenin işidir.

## Gövde

Gövdede yanıtlanan soru "ne yapıldı" değil, **"neden yapıldı"**dır. Değişikliğin kendisi zaten
farkta görünür; farkta görünmeyen şey, o değişikliği gerektiren durumdur.

Yararlı bir gövde şunları içerir:

- **Sorunun tanımı.** Hangi davranış yanlıştı ya da hangi ihtiyaç karşılanmıyordu?
- **Çözümün gerekçesi.** Neden bu yol seçildi?
- **Elenen seçenekler.** Denenip vazgeçilen bir yaklaşım varsa, aynı yolun yeniden denenmesini
  önler.
- **Bilinen sınırlar.** Çözümün kapsamadığı durumlar.

Satırlar yetmiş iki karakter civarında elle kırılır. Nedeni, `git log` çıktısının mesaj
gövdesini dört boşluk girintiyle yazmasıdır: seksen sütunluk bir alanda taşmayı önlemek için
gövdenin kendisi daha dar olmalıdır.

## Örnek

Terim listesine üç terim eklenir ve mesaj bir düzenleyicide yazılır. `git commit` seçenek
verilmeden çalıştırıldığında yapılandırılmış metin düzenleyicisi açılır; kaydedilip
kapatıldığında içerik mesaj olur. Boş bırakılırsa işleme yazılmaz.

```
Üç veri yapısı terimi ekle

Ağaç, karma tablosu ve bağlı liste terimleri listede yoktu; bu terimler
sorulduğunda arama betiği boş çıktı veriyordu.

Karşılıklar Veri Yapıları kursunun sözlüğüyle aynı biçimde yazıldı.
```

Konu satırı ne yapıldığını söylüyor; gövde, terimlerin *neden* eksik sayıldığını ve
karşılıkların kaynağını kaydediyor. İkisi de koddan çıkarılamayacak bilgilerdir.

İkinci bir örnek, arama betiğindeki bir düzeltmeye aittir:

```
Aramayı büyük/küçük harften bağımsız yap

Terimler listede küçük harfle tutuluyor. Kullanıcı "Yığıt" yazdığında
arama boş dönüyor, terim listede olduğu hâlde bulunamıyordu.

grep çağrısına -i seçeneği eklendi; bu seçenek POSIX'te tanımlıdır ve
ek bağımlılık getirmez.
```

Bu mesajın kaydettiği bilgi, tek satırlık farkın kendisinden daha değerlidir: `-i` seçeneğinin
neden eklendiği ve neden bir başka çözümün (örneğin listeyi büyük harfe çevirmenin)
seçilmediği yazılıdır.

## Ne Yazılmaz

Bazı mesaj kalıpları tarihçeye bilgi eklemez:

- **İçeriği yineleyen konu satırları.** "terimler.txt güncellendi" — farkta zaten görünen
  bilgidir. Dosya adı değil, yapılan iş yazılır.
- **Durum bildiren kalıplar.** "yarım", "geçici", "düzeltme". Bunlar işlemenin ne yaptığını
  söylemez ve tarihçede aranabilir bir iz bırakmaz.
- **Bağlamsız dış numara.** Yalnızca bir kayıt numarası içeren mesaj, o kayıt sistemine
  erişimi olmayan okur için boştur. Numara yazılacaksa gövdeye, sorunun bir cümlelik özetiyle
  birlikte konur.
- **Birden çok işi sayan konu satırları.** "X eklendi ve Y düzeltildi" cümlesindeki "ve",
  işlemenin bölünmesi gerektiğinin işaretidir.

Son madde, işleme mesajının atomik işleme alışkanlığıyla nasıl bağlandığını gösterir: iyi bir
konu satırı yazılamıyorsa sorun çoğu zaman mesajda değil, işlemenin kapsamındadır.

## Mesajın Verilme Yolları

| Yol | Kullanım |
|---|---|
| `git commit` | Düzenleyici açılır; çok satırlı mesaj için olağan yol |
| `git commit -m "konu"` | Tek satırlık mesaj |
| `git commit -m "konu" -m "gövde"` | Her `-m` bir paragraf olur, aralarına boş satır konur |
| `git commit -F dosya` | Mesaj bir dosyadan okunur |

Düzenleyicide açılan şablonda `#` ile başlayan satırlar bulunur; bunlar mesaja dâhil edilmez
ve o anki durumu özetler. Yazmadan önce bu özeti okumak, yanlış dosyaların hazırlık alanına
alındığını fark etmenin en ucuz yoludur.

## Sonuç

```bash
git log --oneline
```

```
60e13bd Aramayı büyük/küçük harften bağımsız yap
43370ca Üç veri yapısı terimi ekle
3132c78 Biçim örneğindeki yazımı düzelt
546c174 Terim arama betiği ekle
13d31bf Terim listesini ve biçim belgesini ekle
```

Beş satır, projenin beş adımını okunur biçimde anlatıyor. Bu okunabilirlik doğrudan iki
alışkanlığın sonucudur: her işlemenin tek bir iş içermesi ve her konu satırının o işi emir
kipinde özetlemesi. İkisinden biri bozulduğunda liste değerini yitirir.

## Mesaj Bir Arama Alanıdır

Mesajlar yalnızca okunmaz, aranır da. Konu ve gövde metni üzerinde süzme yapılabilir:

```bash
git log --oneline --grep="arama"
```

```
60e13bd Aramayı büyük/küçük harften bağımsız yap
43370ca Üç veri yapısı terimi ekle
546c174 Terim arama betiği ekle
```

Arama harfi harfine yapılır; sözcük kökü tanınmaz. Türkçede bu ayrıntı belirginleşir:

```bash
git log --oneline --grep="betik"
```

Komut hiçbir satır döndürmez, oysa tarihçede "Terim arama betiği ekle" işlemesi bulunur.
Neden, ünsüz yumuşamasıdır: "betiği" sözcüğü "betik" dizisini içermez. Kısaltılmış bir örüntü
sonucu verir:

```bash
git log --oneline --grep="beti"
```

```
43370ca Üç veri yapısı terimi ekle
546c174 Terim arama betiği ekle
```

Bu davranış, konu satırlarında değişken ek almayan sözcüklerin tercih edilmesini pratik bir
gereklilik hâline getirir.

## Özet

- Mesaj, konu satırı ve gövdeden oluşur; ikisini ilk boş satır ayırır ve bu ayrım araçlar
  tarafından kullanılır.
- Konu satırı emir kipinde, elli karakter civarında ve noktasız yazılır.
- Gövde "ne" değil "neden" sorusunu yanıtlar: sorunun tanımı, çözümün gerekçesi, elenen
  seçenekler ve bilinen sınırlar.
- Gövde satırları yetmiş iki karakter civarında kırılır; `git log` çıktısı gövdeyi girintili
  yazar.
- Mesajlar `--grep` ile aranabilir; bu, konu satırlarının tutarlı yazılmasını pratik bir
  gereklilik hâline getirir.

## Sonraki Adım

Tarihçe beş işlemeye ulaştı ve `git log --oneline` ile listelendi. Ancak listeleme,
tarihçeyi okumanın yalnızca en basit biçimidir: belirli bir dosyaya dokunan işlemeler, belirli
bir metni ekleyen ya da silen işlemeler ve belirli bir zaman aralığı ayrı ayrı sorgulanabilir.
Sonraki ders tarihçe okuma araçlarını ele alacak.
