Versiyon Kontrol Sistemi Nedir?
Versiyon kontrol sistemi (VCS), dosyalardaki değişiklikleri zaman içinde takip eden ve yöneten bir yazılımdır. Yazılım geliştirmede versiyon kontrolü, kod değişikliklerinin kaydını tutmak, ekip çalışmasını koordine etmek ve gerektiğinde önceki sürümlere geri dönebilmek için kullanılır. Git, günümüzde en yaygın kullanılan dağıtık versiyon kontrol sistemidir.
Linus Torvalds tarafından 2005 yılında Linux çekirdeğinin geliştirilmesi için oluşturulan Git, hız, veri bütünlüğü ve dağıtık, doğrusal olmayan iş akışları için tasarlanmıştır. Bugün dünyada yazılım geliştiren ekiplerin büyük çoğunluğu Git kullanmaktadır.
Git Kurulumu ve Yapılandırma
Git'i bilgisayarınıza kurduktan sonra ilk yapmanız gereken temel yapılandırmadır. Kullanıcı adınızı ve e-posta adresinizi ayarlamak, commit'lerinizin doğru şekilde etiketlenmesini sağlar. Terminal üzerinden git config --global user.name "Adınız" ve git config --global user.email "email@adresiniz.com" komutlarıyla bu ayarları yapabilirsiniz.
Temel Git Komutları
Depo Oluşturma ve Klonlama
- git init: Mevcut dizinde yeni bir Git deposu oluşturur.
- git clone: Uzak bir depoyu yerel bilgisayarınıza kopyalar.
git clone https://github.com/kullanici/proje.git
Değişiklikleri Yönetme
- git status: Çalışma dizinindeki değişiklikleri gösterir. Hangi dosyaların değiştiğini, hangilerinin stage'e eklendiğini görürsünüz.
- git add: Değişiklikleri hazırlık alanına (staging area) ekler.
git add dosya.txtveyagit add .(tüm değişiklikler). - git commit: Hazırlık alanındaki değişiklikleri kalıcı olarak kaydeder.
git commit -m "Değişiklik açıklaması" - git log: Commit geçmişini görüntüler.
git log --onelineile özet görünüm alabilirsiniz.
Branch (Dal) Yönetimi
Branch'ler, ana kod tabanından bağımsız olarak geliştirme yapmanızı sağlar. Yeni bir özellik eklerken veya hata düzeltirken ayrı bir branch oluşturarak ana kodu koruyabilirsiniz.
- git branch: Mevcut branch'leri listeler veya yeni branch oluşturur.
git branch yeni-ozellik - git checkout / git switch: Branch'ler arasında geçiş yapar.
git switch yeni-ozellik - git merge: Bir branch'i mevcut branch'e birleştirir.
git merge yeni-ozellik
İyi bir branch stratejisi olarak Git Flow veya GitHub Flow kullanılabilir. Ana branch (main) her zaman dağıtılabilir durumda tutulmalıdır.
GitHub ile Çalışma
GitHub, Git depolarını barındıran ve ekip işbirliğini kolaylaştıran bir platformdur. Pull Request (PR) mekanizması sayesinde kod değişikliklerini inceleme ve onaylama süreci yönetilebilir. Issues özelliğiyle hata raporları ve özellik istekleri takip edilir. GitHub Actions ile CI/CD süreçleri otomatize edilebilir.
- git push: Yerel commit'lerinizi uzak depoya gönderir.
git push origin main - git pull: Uzak depodaki değişiklikleri yerel deponuza çeker ve birleştirir.
- git fetch: Uzak depodaki değişiklikleri indirir ancak birleştirmez. Önce incelemek istediğinizde kullanılır.
Merge Conflict (Birleştirme Çakışması) Çözme
İki farklı branch'te aynı dosyanın aynı satırları değiştirildiğinde birleştirme çakışması oluşur. Git bu durumda çakışan bölgeleri işaretler ve sizden manuel olarak çözmenizi ister. Çakışma işaretlerini (<<<<<<<, =======, >>>>>>>) temizleyerek doğru kodu bırakın, ardından değişiklikleri stage'e ekleyip commit edin.
.gitignore Dosyası
.gitignore dosyası, Git'in takip etmemesi gereken dosyaları ve dizinleri belirler. Node modülleri, derleme çıktıları, ortam değişkenleri (.env) ve IDE yapılandırma dosyaları gibi öğeler genellikle .gitignore'a eklenir. Bu sayede depoda yalnızca kaynak kodunuz ve gerekli yapılandırma dosyalarınız bulunur.
Sonuç
Git ve GitHub, modern yazılım geliştirmenin temel araçlarıdır. Bireysel projelerde bile versiyon kontrolü kullanmak, kod geçmişinizi korumanız ve hataları geri alabilmeniz açısından büyük avantaj sağlar. Düzenli olarak commit atma, anlamlı commit mesajları yazma ve branch kullanma alışkanlığını edinin. Bu beceriler, profesyonel yazılım geliştirme kariyerinizin vazgeçilmez bir parçası olacaktır.