Commit yapmak — nedir, biçimlendirme kuralları ve Git ile çalışma

Yazar: IT Sectr Yayınlanma: 2026-07-31 Okuma süresi: 6 dk

Commit yapmak, Git sürüm kontrol sisteminde değişiklikleri kaydetme eylemidir ve proje geçmişinde bir kaydetme noktası oluşturur. Her commit bir hash, yazar, tarih ve değişiklik açıklaması içerir. GitHub Octoverse 2024'e göre, dünya çapında her gün 50 milyondan fazla commit oluşturulmaktadır. Commit, sürüm kontrolü ile çalışmanın temel birimidir ve modern yazılım geliştirme onsuz düşünülemez.

Anahtar Noktalar

  • Commit yapmak — yapılan değişikliklerin açıklamasıyla birlikte Git'te değişiklikleri kaydetmek
  • Her commit benzersiz bir hash, yazar, tarih ve mesaja sahiptir
  • Atomiklik — her commit bir mantıksal değişiklik içerir
  • Commit mesajı, değişikliğin neden yapıldığı sorusuna yanıt vermelidir
  • Commit'ler git amend ve rebase ile tamamlanabilir, geri alınabilir ve birleştirilebilir

Git'te Commit Nedir

Git'te commit, proje dosyalarının belirli bir andaki durumunu depolayan bir nesnedir. Her commit, izlenen tüm dosyaların bir anlık görüntüsünü, üst commit'e bir referansı ve meta verileri içerir. Diğer sürüm kontrol sistemlerinin aksine Git, içerik adreslenebilir depolama kullanır — her nesne, içeriğinin SHA-1 hash'i ile tanımlanır.

Bir geliştirici değişiklikleri commit ettiğinde, Git şunları depolayan bir commit nesnesi oluşturur: ağaç nesnesi (dosya yapısı), üst commit hash'i, yazar, committer, tarih ve mesaj. Bu nesne değişmezdir — oluşturulduktan sonra, hash'i değiştirilmeden bir commit değiştirilemez. Bu değişmezlik, proje geçmişinin bütünlüğünü garanti eder.

bash
# Değişiklikleri hazırla ve commit yap
git add index.html style.css
git commit -m "Fix responsive layout on mobile devices"

# Commit ayrıntılarını görüntüle
git log --oneline -3
git show HEAD

# Tüm değişiklikleri hazırla ve tek adımda commit yap
git commit -a -m "Update dependencies to latest versions"

Commit'ler, her yeni commit'in bir öncekine referans verdiği yönlü döngüsüz bir grafik (DAG) oluşturur. Bu, geçmişte gezinmeye, değişiklikleri geri almaya ve kod tabanının evrimini analiz etmeye olanak tanır. Git DAG yapısını anlamak, commit'lerle gelişmiş çalışmanın temelidir.

Değişiklikler Nasıl Doğru Şekilde Commit Edilir

Git'te commit süreci iki aşamadan oluşur: hazırlık alanına (indeks) değişiklikleri ekleme ve commit oluşturma. Hazırlık alanı, geliştiricinin çalışma dizininde birçok dosya değiştirilmiş olsa bile, commit'e hangi belirli değişikliklerin dahil edileceğini seçmesine olanak tanır.

Atomiklik kuralı, iyi bir commit'in temel ilkesidir. Her commit bir mantıksal değişiklik içermelidir. Bir geliştirici bir hatayı düzeltiyor ve kodu yeniden düzenliyorsa — bunlar iki ayrı commit olmalıdır. Atomik commit'ler, kod incelemesini, değişiklik geri almayı ve geçmiş analizini basitleştirir.

Commit yapmadan önce, kodda hata ayıklama çıktısı, yorumlanmış bloklar veya yanlışlıkla yapılan değişiklikler kalıp kalmadığını kontrol etmekte fayda var. Bunun için git diff --cached komutu kullanılır ve commit'e tam olarak neyin dahil edileceğini gösterir. git status ile ek kontrol, hazırlık alanındaki dosyaların listesini görüntüler.

  • Değişiklikleri kontrol et — git diff --cached commit'e neyin gireceğini gösterir
  • Kaliteyi kontrol et — kod, commit'ten önce linter ve testleri geçmelidir
  • Bir mesaj yaz — değişikliğin amacının net bir açıklaması
  • Hazırlanan dosyaları kontrol et — git status dosya listesini onaylar

Commit Mesajı Yazma Kuralları

Commit mesajı, gelecekteki geliştiriciler için değişikliğin belgelenmesidir. İyi bir mesaj şu soruları yanıtlar: ne değiştirildi ve neden. Conventional Commits kuralı (Angular ekibi, 2016) birçok proje için standart haline gelmiştir ve biçimi tanımlar: tür(kapsam): açıklama.

TürAmaçÖrnek
featyeni işlevsellikfeat(api): add user registration endpoint
fixhata düzeltmesifix(auth): resolve token refresh issue
refactordavranış değişikliği olmadan yeniden düzenlemerefactor(core): extract payment validator
docsbelgelerdocs(readme): update installation guide
testtest eklemetest(cart): add unit tests for checkout

İyi bir commit mesajı, bir başlık (50 karaktere kadar) ve bir gövdeden (isteğe bağlı, satır başına 72 karaktere kadar) oluşur. Başlık emir kipinde yazılır: “Add” değil “Added” veya “Adds”. Capitalization ve başlık sonunda nokta kullanılmaz — bu uluslararası bir Git kuralıdır.

Kötü bir mesaj: “fix things” veya “update” — bilgi taşımaz. Bir ay sonra, bir geliştirici tam olarak neyin ve neden değiştirildiğini anlayamaz. İyi bir mesaj: “fix(payment): handle timeout in stripe callback” — neyin ve nerede düzeltildiği hemen anlaşılır.

Commit Yaparken Sık Yapılan Hatalar

Geliştiriciler, özellikle yeni başlayanlar, commit yaparken sık sık tipik hatalar yaparlar. En yaygın olanı, düzinelerce değişikliği karıştıran çok büyük bir commit'tir. Böyle bir commit kısmen geri alınamaz ve kod incelemesi bir işkence haline gelir.

İkinci en sık yapılan hata, kötü bir commit mesajıdır. “fix”, “update”, “changes” veya “wip” gibi mesajlar, gelecekteki geliştiricilere bağlam sağlamaz. Altı ay sonra, kimse tam olarak neyin düzeltildiğini hatırlamayacaktır. Kural basittir: bir yıl sonra geçmişe bakıp belirli bir değişikliği bulmaya çalıştığınızı hayal edin.

Üçüncü hata, derlenmemiş veya çalışmayan kodu commit etmektir. Bir commit'ten sonra, kod en azından derlenmelidir. Derlemeyi bozmamak, ortak bir daldaki herhangi bir commit için temel bir gerekliliktir. Bunun için commit'ten önce derleme ve testler çalıştırılır.

Dördüncü hata, gizli verileri commit etmektir. API anahtarları, şifreler ve token'lar Git geçmişine girmemelidir. Bir sır zaten commit edilmişse, onu yeni bir commit'te kaldırmak yeterli değildir, git filter-branch veya BFG Repo-Cleaner ile tüm geçmişten silinmesi gerekir.

Commit'lerle Çalışmak için Gelişmiş Teknikler

Git, commit geçmişini yönetmek için araçlar sağlar. En kullanışlı olanlardan biri git commit --amend'tir, son commit'i yeni değişikliklerle tamamlamaya veya mesajı düzeltmeye olanak tanır. Geliştiricinin bir dosyayı eklemeyi unutması veya mesajda yazım hatası yapması durumunda kullanışlıdır.

bash
# Son commit mesajını düzelt
git commit --amend -m "fix(auth): correct token validation logic"

# Son commit'e unutulan dosyayı ekle
git add missed-file.txt
git commit --amend --no-edit

# Son 3 commit için interaktif rebase
git rebase -i HEAD~3

İnteraktif rebase, geçmişi yeniden yazmak için güçlü bir araçtır. Commit'leri birleştirmeye (squash), mesajları değiştirmeye (reword), yeniden sıralamaya (reorder) ve commit'leri silmeye (drop) olanak tanır. Ancak rebase geçmişi değiştirir, bu nedenle yalnızca henüz uzak depoya gönderilmemiş yerel commit'lerde kullanılır.

Commit'leri geri almak için iki yaklaşım vardır. git revert, öncekinin değişikliklerini geri alan yeni bir commit oluşturur — geçmişi koruyan güvenli bir yöntem. git reset, commit'leri geçmişten kaldırır — commit'ler zaten gönderilmişse tehlikelidir. Takım geliştirmede, yayınlanmış commit'leri geri almak için yalnızca git revert kullanılır.

Sıkça Sorulan Sorular

Git'te commit yapmak ne anlama gelir?

Commit yapmak, Git'te değişiklikler için bir kaydetme noktası oluşturmak anlamına gelir. Commit, neyin ve neden değiştirildiğinin açıklamasıyla birlikte proje geçmişindeki dosyaların mevcut durumunu kaydeder. Her commit'in benzersiz bir tanımlayıcısı (SHA-1 hash) vardır ve kesintisiz bir değişiklik zincirinin parçasıdır.

Git'te ne sıklıkla commit yapmalıyım?

Mantıksal olarak tamamlanmış her değişiklikten sonra, küçük bile olsa, commit yapılması önerilir. En uygun sıklık, görev veya düzeltme başına 1 commit'tir. Her 5 dakikada bir commit yapmamalısınız, ancak birkaç gün boyunca tek bir commit olmadan değişiklik biriktirmemelisiniz.

Atomik commit nedir?

Atomik commit, bir mantıksal değişiklik içerir — bir görev, bir hata düzeltmesi veya yeni bir işlevsellik. Farklı değişiklikleri tek bir commit'te karıştırmaz. Atomik commit'lerin avantajları: kolay geri alma, net geçmiş ve basit kod incelemesi.

Git'te bir commit nasıl geri alınır?

Yayınlanmış bir commit'i geri almak için git revert <commit-hash> kullanın — değişiklikleri geri alan yeni bir commit oluşturur. Yerel commit'ler için git reset HEAD~1 kullanabilirsiniz, ancak yalnızca commit henüz gönderilmemişse. git revert takım çalışması için güvenli yöntemdir.

Zaten oluşturulmuş bir commit değiştirilebilir mi?

Evet, uzak depoya göndermeden önce. Son commit'i değiştirmek için git commit --amend veya birden çok commit'i değiştirmek için git rebase -i kullanın. Gönderdikten sonra geçmişi değiştirmek önerilmez — diğer geliştiriciler zaten değişikliklerini göndermişlerse sorunlara neden olabilir.

Özet

  • Commit yapmak — değişiklik açıklamasıyla Git'te değişiklikleri kaydetmek
  • Atomiklik — bir commit = bir mantıksal değişiklik
  • Mesaj — Conventional Commits kullan: tür(kapsam): açıklama
  • Doğrulama — kod commit'ten önce derlenmeli ve testleri geçmelidir
  • Güvenlik — sırları commit etme, .gitignore kullan
  • Değiştirme — son commit için amend, birden çok için rebase -i
  • Geri alma — yayınlanmış için git revert, yerel için git reset

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun