Yazılım Geliştirme

Git Nedir? Versiyon Kontrolüne Giriş

Versiyon kontrolünün mantığını ve commit, branch, merge kavramlarını yeni başlayanlar için örnek komutlarla adım adım anlatıyoruz.

Aurora YazılımEditör ekibi 6 dk okuma
Git Nedir? Versiyon Kontrolüne Giriş
Git nedir?

Git, dosyalardaki her değişikliği kayıt altına alan, ücretsiz ve açık kaynaklı bir dağıtık versiyon kontrol sistemidir. Git nedir sorusunun kısa yanıtı şudur: projenin geçmişini adım adım saklar, hatalı bir değişikliği geri almayı, aynı kod üzerinde birden çok kişinin çakışmadan çalışmasını ve farklı fikirleri ayrı dallarda denemeyi mümkün kılar.

Versiyon Kontrol Sistemi Nedir?

Bir belgeyi “son”, “son-gerçek”, “son-bu-kesin” diye kopyalayarak saklamak tanıdık gelir mi? Versiyon kontrol sistemi, bu dağınıklığın düzenli ve güvenilir hâlidir. Her değişikliği kimin, ne zaman ve neden yaptığıyla birlikte kaydeder.

Yazılımda bu kayıt hayati önemdedir. Dün çalışan bir özellik bugün bozulduysa, aradaki değişiklikleri satır satır görebilir ve gerekirse eski hâline dönebilirsiniz. Ekip büyüdükçe bu düzen olmadan çalışmak neredeyse imkânsız hâle gelir.

Git, 2005 yılında Linux çekirdeğinin geliştirilmesi için ortaya çıktı ve bugün dünyada en yaygın kullanılan versiyon kontrol aracıdır. Resmî belgeler ve indirme bağlantıları git-scm.com adresinde bulunur.

Git Ne İşe Yarar?

Git'in değeri, yalnızca yedek almaktan çok daha fazlasıdır. Doğru kullanıldığında ekibin çalışma biçimini baştan düzenler.

Tek başına çalışan bir geliştirici için bile fark büyüktür. Yeni bir fikri denemek için projeyi kopyalamanız gerekmez; bir dal açar, dener, beğenmezseniz silersiniz. Ana sürüm her zaman temiz ve çalışır durumda kalır, deneme maliyeti neredeyse sıfıra iner.

  • Geçmişi saklar: her kayıt noktası, projenin o anki fotoğrafıdır.
  • Geri dönüşü kolaylaştırır: hatalı değişikliği tek komutla geri alabilirsiniz.
  • Paralel çalışmayı sağlar: herkes kendi dalında çalışır, sonra birleştirir.
  • Sorumluluğu görünür kılar: hangi satırı kimin neden değiştirdiği bellidir.
  • Dağıtık yapıdadır: her geliştiricinin bilgisayarında projenin tam kopyası bulunur, internet olmadan da çalışılır.
  • Yayın sürecine bağlanır: test ve canlıya alma adımları belirli dallara bağlanarak otomatikleştirilebilir.

Temel Kavramlar: Depo, Commit, Branch

Git'i anlamanın en kısa yolu dört kavramı oturtmaktır. Komutlar bu kavramların üzerine kurulur.

Depo (repository)

Depo, projenin dosyalarını ve tüm değişiklik geçmişini içeren klasördür. Gizli bir .git klasörü bu geçmişi tutar. Bilgisayarınızdaki depoya yerel depo, GitHub ya da GitLab gibi bir sunucudakine uzak depo denir.

Commit nedir?

Commit, belirli bir anda yapılan değişikliklerin açıklamalı kaydıdır. Her commit'in benzersiz bir kimliği vardır. İyi bir commit küçük ve tek amaçlıdır; mesajı da “ne değişti ve neden” sorusunu yanıtlar.

Hazırlık alanı (staging)

Git'te değişiklikler doğrudan kaydedilmez; önce hazırlık alanına eklenir. Böylece aynı anda değiştirdiğiniz on dosyadan yalnızca ilgili üçünü tek bir commit'e koyabilirsiniz.

Branch ve merge

Branch (dal), ana koddan ayrılan bağımsız bir çalışma hattıdır. Yeni bir özelliği ayrı dalda geliştirir, hazır olunca merge ile ana dala birleştirirsiniz. Böylece yarım iş, çalışan sürümü bozmaz.

Git Temel Komutlar

Git'i kurduktan sonra günlük işin büyük bölümü bir avuç komutla yürür. Kurulum adımları için Git kurulumu rehberimize bakabilirsiniz. Aşağıdaki komutlar Windows, macOS ve Linux'ta aynı şekilde çalışır.

bashİlk ayarlar ve yeni depo
git --version
git config --global user.name "Adınız Soyadınız"
git config --global user.email "eposta@ornek.com"
mkdir proje && cd proje
git init
bashDeğişiklikleri kaydetmek
git status
git add index.html
git add .
git commit -m "Ana sayfa başlığı eklendi"
git log --oneline
bashDal açmak ve birleştirmek
git switch -c iletisim-formu
# ... değişiklikleri yap ve commit et ...
git switch main
git merge iletisim-formu
git branch -d iletisim-formu
bashUzak depoyla çalışmak
git clone https://github.com/kullanici/proje.git
git pull
git push origin main

Tipik Bir Git İş Akışı

Küçük bir ekipte bile aşağıdaki akış, karışıklığı büyük ölçüde önler.

  1. Güncel kodu çekin: işe başlamadan önce git pull ile ana dalı güncelleyin.
  2. Yeni dal açın: her özellik ya da düzeltme için ayrı bir dal oluşturun.
  3. Küçük commit'ler atın: her mantıklı adımı açıklayıcı bir mesajla kaydedin.
  4. Dalı uzak depoya gönderin: git push ile çalışmanızı paylaşın.
  5. İnceleme isteyin: GitHub'da pull request, GitLab'da merge request açın.
  6. Onaydan sonra birleştirin: ana dala yalnızca incelenmiş kod girsin.

Git ile GitHub Arasındaki Fark

En sık karıştırılan konu budur. Git bir araçtır; bilgisayarınızda çalışır ve geçmişi tutar. GitHub, GitLab, Bitbucket gibi servisler ise Git depolarını internette barındıran, üzerine inceleme, görev takibi ve otomasyon ekleyen platformlardır.

Git'i hiçbir platforma bağlı olmadan tek başınıza kullanabilirsiniz. Ancak ekip çalışması ve yedekleme için bir uzak depo kullanmak pratikte standart hâline gelmiştir.

ÖzellikGitGitHub / GitLab
TürüKomut satırı aracıWeb tabanlı platform
Çalıştığı yerYerel bilgisayarUzak sunucu
Temel işiGeçmişi kaydetmekDepoyu paylaşmak ve yönetmek
İnternetGerekmezGerekir
Ek özelliklerDal, birleştirme, geçmişİnceleme, görev, otomasyon

.gitignore ve İyi Commit Mesajı

Her depoda neyin takip edilmeyeceğini belirten bir .gitignore dosyası bulunmalıdır. Bağımlılık klasörleri, derleme çıktıları, log dosyaları ve ortam değişkenleri bu listeye girer. Böylece depo küçük kalır, yeniden üretilebilen dosyalar geçmişi şişirmez ve gizli bilgiler yanlışlıkla paylaşılmaz.

Commit mesajı ise altı ay sonra okuyacağınız bir nottur. İlk satırda 50 karakter civarında, emir kipinde kısa bir özet yazmak yaygın bir alışkanlıktır: “Sepet toplamındaki yuvarlama hatasını düzelt” gibi. Gerekirse bir boş satırdan sonra nedenini ve etkisini açıklayın.

İyi mesajlar yalnızca düzen için değildir. Bir hatanın hangi değişiklikle geldiğini bulmak istediğinizde git log ve git blame komutları size doğrudan yol gösterir; açıklayıcı mesajlar bu aramayı dakikalara indirir. Ekip içinde ortak bir mesaj biçimi belirlemek, kod incelemesini de hızlandırır.

textÖrnek .gitignore
node_modules/
dist/
.env
*.log
.DS_Store

Yeni Başlayanların Sık Hataları

Bu hataların çoğu birkaç haftalık pratikle kendiliğinden kaybolur. Önemli olan, ilk günden küçük ve açıklamalı commit alışkanlığını edinmektir.

  • Gizli bilgiyi commit etmek: parola ve API anahtarları depoya girmemeli; .env gibi dosyaları .gitignore içine ekleyin.
  • Dev commit'ler: bir haftalık işi tek commit'e koymak, geri dönüşü zorlaştırır.
  • Anlamsız mesajlar: “düzeltme” ya da “asdf” yerine ne değiştiğini yazın.
  • Doğrudan ana dalda çalışmak: yarım iş canlı sürümü bozabilir.
  • Çakışmadan korkmak: merge conflict normaldir; Git hangi satırların çakıştığını açıkça gösterir.
  • node_modules gibi klasörleri eklemek: yeniden oluşturulabilen dosyaları depoya koymayın.

Git'i Nereden Öğrenmeye Başlamalı?

En etkili yol, küçük bir projeyi baştan sona Git ile yönetmektir. Basit bir HTML sayfası ya da bir JavaScript nedir yazısında anlattığımız türden küçük bir betik, kavramları oturtmak için yeterlidir.

Sonraki adımda bir Node.js projesi kurup paket dosyalarını, .gitignore'u ve dalları birlikte deneyebilirsiniz. Arayüz ve sunucu kodunun aynı depoda mı ayrı depolarda mı tutulacağı sorusu için frontend ve backend farkı yazımız yol gösterir.

Profesyonel projelerde Git, işin görünmeyen ama vazgeçilmez omurgasıdır. Aurora Yazılım'da web tasarımı, kurumsal web sitesi ve e-ticaret altyapısı projelerinin tamamı sürüm kontrolüyle yürütülür; böylece her değişiklik izlenebilir ve geri alınabilir kalır.

Sık Sorulan Sorular

01Git öğrenmek için programcı olmak gerekir mi?

Hayır. Git yalnızca kod için değil, metin tabanlı her dosya için kullanılabilir. Yazarlar, tasarımcılar ve dokümantasyon ekipleri de değişiklik geçmişini takip etmek için Git'ten yararlanır.

02Git ücretli mi?

Git ücretsiz ve açık kaynaklıdır. GitHub ve GitLab gibi barındırma servislerinin ücretsiz planları bulunur; gelişmiş ekip özellikleri için ücretli planlar sunarlar.

03Bir commit'i nasıl geri alırım?

Paylaşılmış bir commit'i geri almak için git revert kullanmak en güvenlisidir; geçmişi silmez, tersine bir commit ekler. Henüz göndermediğiniz yerel değişikliklerde git restore ya da git reset kullanılabilir, ama ne yaptığından emin olmadan reset --hard çalıştırmayın.

04Merge conflict neden olur?

İki dalda aynı dosyanın aynı satırları farklı biçimde değiştirildiğinde Git hangisinin doğru olduğuna karar veremez. Dosyada işaretlenen bölümleri düzenleyip yeniden commit ettiğinizde çakışma çözülür.

Git, yazılım projelerinin hafızasıdır: her değişikliği kaydeder, hataları geri almayı ve ekipçe çalışmayı kolaylaştırır. Projenizin bu disiplinle geliştirilmesini istiyorsanız Aurora Yazılım'ın yazılım çözümlerini inceleyebilir, hızlı ve sürdürülebilir bir site için hız ve performans yönetimi hizmetimize göz atabilir ya da doğrudan bizimle iletişime geçebilirsiniz.