Neler yeni

Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

  • Merhaba Değerli Ziyaretçimiz, ForumaGel ailesi seni bekliyor! 🌟 Aramıza katılarak güçlü ve samimi topluluğumuzun bir parçası olabilirsin. Burada her üye değerli, her katkı kıymetli. Şimdi üye ol, bizimle birlikte gelişmenin ve keyifli sohbetlerin tadını çıkar! Sevgi ve Saygılarla, ForumaGel Yönetimi ❤️
Yan Yana Banner
Yan Yana Banner
Katılım
7 Nis 2025
Konular
367
Mesajlar
780
Çözümler
1
Tepkime puanı
121
Puan
93
Konum
İstanbul
Web sitesi
forumagel.com
Hazır Kod Bankası - Konu 13: Versiyon Kontrol Sistemleri (Git Temelleri)



Hazır Kod Bankası Serimizin On Üçüncü Konusu: Git ile Versiyon Kontrolü!

Merhaba arkadaşlar! Programlama dillerini ve bazı temel konseptleri öğrenmeye başladık. Artık kendi kodlarımızı yazıp projeler oluşturuyoruz. Peki bu kodları nasıl yönetmeliyiz? Yaptığımız değişiklikleri nasıl takip etmeliyiz? Yanlış bir şey yaptığımızda kolayca nasıl geri dönebiliriz? Bir ekip arkadaşımızla aynı proje üzerinde nasıl çalışabiliriz? İşte tüm bu soruların cevabı Versiyon Kontrol Sistemleri (Version Control Systems - VCS)'dir.

Versiyon kontrol sistemleri, dosyalarınızdaki (özellikle kod dosyalarındaki) değişiklikleri zaman içinde kaydetmenize, farklı versiyonlar arasında gezmenize, değişiklikleri karşılaştırmanıza ve birden fazla kişinin aynı proje üzerinde çakışmaları minimize ederek işbirliği yapmasına olanak tanır.

Günümüzde en popüler ve endüstri standardı haline gelmiş Dağıtık Versiyon Kontrol Sistemi Git'tir. Git, hem bireysel projelerinizde hem de büyük ölçekli ekip çalışmalarında vazgeçilmez bir araçtır.

Bu konuda Git'in ne olduğunu, neden kullanmamız gerektiğini ve en temel Git komutlarını kullanarak projelerimizi yönetmeye nasıl başlayacağımızı öğreneceğiz.

1. Versiyon Kontrolü Neden Gereklidir ve Neden Git?

  • Değişiklik Takibi: Projenizde yapılan her değişikliği kimin, ne zaman, neden yaptığını kaydedebilirsiniz.
  • Geri Dönüş: Hatalı bir kod yazarsanız veya bir özellik istediğiniz gibi olmazsa projenizin önceki stabil bir versiyonuna kolayca dönebilirsiniz.
  • İşbirliği: Birden fazla geliştirici aynı kod tabanı üzerinde düzenli ve kontrollü bir şekilde çalışabilir. Çakışmaları yönetmeye yardımcı olur.
  • Paralel Geliştirme (Branching): Ana projeyi bozmadan yeni özellikler veya denemeler üzerinde ayrı dallarda çalışabilirsiniz.
  • Yedekleme: Projenizin geçmişi güvenli bir şekilde saklanır. Uzak depolara (GitHub, GitLab gibi) göndererek bulutta yedeklemiş olursunuz.
Git, dağıtık yapısı sayesinde her geliştiricinin kendi yerel deposunda projenin tam geçmişini tutmasını sağlar, bu da daha hızlı işlem yapılmasına ve internet bağlantısı olmadan da çalışabilmeye olanak tanır.

2. Git Temel Kavramları

  • Repository (Depo / Repo): Projenizin tüm dosyalarını, klasör yapısını ve tüm değişiklik geçmişini barındıran Git veritabanıdır. Genellikle projenizin ana klasöründe gizli bir `.git` klasörü olarak bulunur. Hem yerel bilgisayarınızda (`local repo`) hem de uzak sunucularda (`remote repo` - GitHub vb.) bulunabilir.
  • Commit: Projenizin belirli bir andaki anlık görüntüsünü (snapshot) kaydetme işlemidir. Projenizin geçmişindeki her bir kaydedilmiş adımdır. Her commit'in benzersiz bir kimliği (hash) ve o commit'te yapılan değişiklikleri anlatan bir mesajı vardır.
  • Branch (Dal): Projenizin ana gelişim hattından ayrılan paralel bir çalışma hattıdır. Yeni bir özellik geliştirirken veya hata düzeltirken genellikle yeni bir branch oluşturulur.
  • Working Directory (Çalışma Dizini): Bilgisayarınızda projenizin dosyalarının şu an gördüğünüz, üzerinde değişiklik yaptığınız halidir.
  • Staging Area (Sahneleme Alanı / Index): Çalışma dizininde yaptığınız değişikliklerden hangilerini bir sonraki commit'e dahil etmek istediğinizi seçtiğiniz geçici alandır. `git add` komutu ile dosyalar bu alana eklenir.
Temel akış genellikle şöyledir: Çalışma Dizini (Değişiklik yaparsın) -> Sahneleme Alanı (`git add` ile eklersin) -> Yerel Depo (`git commit` ile kaydedersin).

3. Git Kurulumu ve İlk Deponuzu Oluşturma

Git'i kullanmaya başlamak için öncelikle bilgisayarınıza kurmanız gerekir. Git'in resmi web sitesi
Ziyaretçiler için gizlenmiş link, görmek için kayıt olun. Giriş yap veya üye ol.
adresinden işletim sisteminize uygun sürümü indirebilirsiniz. Kurulum genellikle varsayılan seçeneklerle tamamlanabilir. Kurulumdan sonra Komut İstemi (CMD), Terminal veya Git Bash gibi bir komut satırı arayüzü açarak Git komutlarını çalıştırabilirsiniz.

Mevcut bir proje klasöründe Git kullanmaya başlamak için o klasöre gidin ve aşağıdaki komutu çalıştırın:

Kod:
> git init
Açıklama: Bu komut, bulunduğunuz klasörde gizli bir `.git` alt klasörü oluşturur. Bu klasör, deponuzun tüm geçmişini ve ayarlarını içerir. Artık bu klasör bir Git deposudur.

4. Temel Git İş Akışı: add, commit, status, log

Projenizdeki dosyaları Git ile takip etmeye başlamak için bu komutları kullanırız:

`git status`: Çalışma dizininizin ve sahneleme alanınızın o anki durumunu gösterir. Hangi dosyaların değiştirildiğini, hangilerinin sahnelendiğini ve hangilerinin henüz takip edilmediğini (untracked) belirtir.

Kod:
> git status

`git add <dosya_adı>` veya `git add .`: Değişiklikleri sahneleme alanına ekler. `. ` kullanmak, mevcut klasördeki tüm değişiklikleri (yeni, değiştirilmiş veya silinmiş dosyaları) sahneleme alanına ekler.

Kod:
> git add index.html    # Sadece index.html dosyasındaki değişiklikleri sahnele
> git add .             # Takip edilen ve yeni tüm değişiklikleri sahnele
`git status` çalıştırdığınızda, `Changes to be committed` başlığı altında sahnelenen dosyaları görürsünüz.

`git commit -m "Commit mesajı"`: Sahneleme alanındaki değişiklikleri yerel depoya kaydeder. Her commit'in projenin o anki durumunu yansıtan kısa ve açıklayıcı bir mesajı olmalıdır.

Kod:
> git commit -m "Ana sayfa HTML yapısı eklendi"
Açıklama: `-m` bayrağı (flag) komitten sonra commit mesajını doğrudan yazmanızı sağlar. `git status` artık temiz bir çalışma ağacınız olduğunu gösterir.

`git log`: Deponuzun commit geçmişini listeler. En son committen başlayarak geriye doğru tüm commit'leri (kimlikleri, yazarı, tarihi ve mesajı ile) gösterir.

Kod:
> git log
Geçmişten çıkmak için `q` tuşuna basın.

`git diff`: Dosyalarınızdaki değişiklikleri gösterir.
Kod:
> git diff         # Çalışma dizini ile sahneleme alanı arasındaki değişiklikleri gösterir
> git diff --staged # Sahneleme alanı ile son commit arasındaki değişiklikleri gösterir

5. Uzak Depolar (Remote Repos) ve Temel İşbirliği (clone, push, pull)

Git genellikle GitHub, GitLab, Bitbucket gibi web tabanlı platformlarda barındırılan uzak depolarla birlikte kullanılır. Bu platformlar kodunuzu yedeklemenizi ve başkalarıyla kolayca işbirliği yapmanızı sağlar.

`git clone <depo_url>`: Uzak bir depoyu (remote repo) yerel bilgisayarınıza kopyalar. Bu komut hem uzak depoyu kopyalar hem de otomatik olarak bir yerel depo oluşturur.

Kod:
> git clone https://github.com/kullaniciadi/ornek-proje.git

`git push`: Yerel deponuzdaki commit'leri uzak depoya gönderir. Genellikle `git push origin main` gibi kullanılır (burada `origin` uzak deponun varsayılan adı, `main` ise gönderilecek branch'in adıdır).

Kod:
> git push origin main

`git pull`: Uzak depodaki değişiklikleri (commit'leri) alır ve kendi yerel branch'inizle birleştirir. Başkalarının yaptığı güncellemeleri almak için kullanılır. Genellikle `git pull origin main` gibi kullanılır.

Kod:
> git pull origin main
Açıklama: Bir projeye başlarken genellikle `git clone` yaparsınız. Sonra değişikliklerinizi yapar (`add`, `commit`), bitince `git push` ile uzak depoya gönderirsiniz. Başkalarının yaptığı değişiklikleri almak için `git pull` yaparsınız.

6. Branching (Çok Kısa Giriş)

Git'in en güçlü özelliklerinden biri branching'dir. Farklı özellikler veya denemeler üzerinde ana kod tabanını etkilemeden paralel çalışmanızı sağlar.

Kod:
> git branch yeni-ozellik # 'yeni-ozellik' adında yeni bir branch oluşturur
> git checkout yeni-ozellik # 'yeni-ozellik' branch'ine geçiş yapar (eski komut)
# veya modern komut (önerilir):
> git switch yeni-ozellik # 'yeni-ozellik' branch'ine geçiş yapar
Branch'ler ve birleştirmeleri (merging) daha ileri seviye bir konudur ancak Git'in temel iş akışında bu kavramın varlığını bilmek önemlidir.

Sıra Sizde!

Git'i bilgisayarınıza kurdunuz mu? Basit bir klasör içinde `git init` komutunu çalıştırarak bir depo oluşturdunuz mu? Klasöre birkaç dosya ekleyip `git status`, `git add .`, `git commit -m "İlk commit"` komutlarını çalıştırmayı denediniz mi? `git log` ile commit geçmişinizi gördünüz mü?

Ücretsiz bir GitHub veya GitLab hesabı oluşturup, yeni bir boş depo yaratıp, bu depoyu `git clone` ile bilgisayarınıza indirip, içine bir dosya ekleyip `add`, `commit`, `push` işlemlerini yapmayı deneyerek uzak depoyla etkileşimi pratik edebilirsiniz.

Git komutları, kavramları veya kurulumu hakkında aklınıza takılan her türlü soruyu bu konu altında sorabilirsiniz.

Serinin Geleceği?[/B]

Git ile versiyon kontrol sistemlerine güçlü bir giriş yaptık. Artık kodunuzu daha profesyonelce yönetebileceksiniz.

Seriyi buradan sonra nasıl devam ettirelim?

  • Git'te daha ileri konular (Branch birleştirme, çakışma çözme, pull request kavramı)?
  • Temel Veri Yapıları (Listeler, Yığınlar, Kuyruklar, Ağaçlar) ve Algoritmalar (Sıralama, Arama) gibi programlama temellerine daha derin dalış?
  • Popüler bir kütüphane veya framework'e giriş (Python web frameworkleri Flask/Django, Veri Analizi Pandas, JS frameworkleri React/Vue)?
  • Başka bir programlama dili (Java, C#, C++ temelleri)?
  • Mobil geliştirme temelleri (Swift, Kotlin)?
  • Kapsülleme (Encapsulation) gibi kalan OOP prensipleri?
  • Veya başka önerileriniz mi var?
Geri bildirimleriniz ve önerileriniz serinin geleceğini şekillendirecektir.

Umarım bu konu Git'e ilk adımı atmanızda ve kod yönetiminizi geliştirmenizde faydalı olmuştur. Görüşmek üzere!


Bu konu, "Hazır Kod Bankası" serisinin on üçüncü parçasıdır ve "Yazılım Bilgi ve Yeni Başlayanlar İçin" kategorisi altında paylaşılmıştır.
 

Şu an konuyu görüntüleyenler

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz

Zevkini yansıtan rengi seç

Geniş / Dar görünüm

Temanızı geniş yada dar olarak kullanmak için kullanabileceğiniz bir yapıyı kontrolünü sağlayabilirsiniz.

Izgara görünümlü forum listesi

Forum listesindeki düzeni ızgara yada sıradan listeleme tarzındaki yapının kontrolünü sağlayabilirsiniz.

Resimli ızgara modu

Izgara forum listesinde resimleri açıp/kapatabileceğiniz yapının kontrolünü sağlayabilirsiniz.

Kenar çubuğunu kapat

Kenar çubuğunu kapatarak forumdaki kalabalık görünümde kurtulabilirsiniz.

Sabit kenar çubuğu

Kenar çubuğunu sabitleyerek daha kullanışlı ve erişiminizi kolaylaştırabilirsiniz.

Köşe kıvrımlarını kapat

Blokların köşelerinde bulunan kıvrımları kapatıp/açarak zevkinize göre kullanabilirsiniz.

Geri