Yazılım dünyasına yeni adım atanlar! Bugün sizlerle yazılımcıların en yakın dostu Git aracını konuşacağız.
Git Nedir ?
Düşünün ki bir zaman makineniz var. Yazdığınız kodda bir şeyler ters gitti ve “keşke dün yazdığım versiyona geri dönebilsem” diyorsunuz. İşte Git tam olarak bunu yapmanızı sağlıyor! Git, kodunuzun her değişikliğini kaydeden bir sürüm kontrol sistemi. Yani projenizdeki her değişikliği kayıt altına alıp, istediğiniz zaman o ana geri dönebilmenizi sağlıyor. Bir nevi kodunuzun dijital hafızası gibi düşünebilirsiniz.
GitHub Nedir ?
GitHub, Git versiyon kontrol sistemini temel alan, bulut tabanlı bir kod barındırma ve işbirliği platformudur. Bu platform, geliştiricilere aşağıdaki temel özellikleri sunar:
- Merkezi kod depolama ve versiyon kontrolü
- İşbirliği ve kod inceleme süreçleri için araçlar
- Entegre proje yönetimi özellikleri
- Otomatik CI/CD süreçleri için altyapı
Git ve GitHub Arasındaki Temel Farklar
Git ve GitHub, birbirini tamamlayan ancak farklı amaçlara hizmet eden araçlardır:
Git, yerel sistemde çalışan ve versiyon kontrol işlemlerini gerçekleştiren bir yazılımdır. Temel işlevi, kod değişikliklerini izlemek ve yönetmektir.
GitHub ise Git’in sunduğu özellikleri bulut ortamında kullanılabilir hale getiren bir platformdur. Ekip işbirliğini kolaylaştırır ve proje yönetimi için ek araçlar sağlar.
Her iki sistem de modern yazılım geliştirme süreçlerinin vazgeçilmez bileşenleridir ve açık kaynak projelerden kurumsal uygulamalara kadar geniş bir yelpazede kullanılmaktadır.
Linux Sisteme Git Kurulumu
Linux sistemlerde Git’i yüklemek için aşağıdaki komutları kullanabilirsiniz:
Debian/Ubuntu için:
sudo apt update
sudo apt install git
CentOS/RHEL için:
sudo dnf install git
Temel Komutlar
- git init: Bu komut ile repository oluşturmanın iki yolu var. Aşağıdaki şekilde çalıştırıldığı dizini bir repository’ye dönüştürecektir.
- git config: Kullanıcı adı ve mail gibi başlıca ayarları yapılandırmamızı sağlar.
- git status: Yapılan değişikliklerin durumunu gösterir.
- git add: Yapılan değişiklikleri daha sonra kaydedilmek üzere ‘takip listesi’ olarak adlandırabileceğimiz ‘staging area’ya ekler.
- git reset: Yaptığımız değişiklikleri geri almamızı sağlar.
- git commit: ‘Takip listesi’ne alınan değişikliği local repository’ye kaydeder (commitler).
- git log: Projedeki commit’leri listeler.
- git push: Commit edilmiş değişikliklerin uzak sunucuya aktarılmasını sağlar.
- git pull: Master branch’ten projenin en güncel halini almamızı sağlar.
- git branch: Mevcut repository’deki branchleri listeler.
- git clone: Uzak sunucudaki bir projeyi tüm branch’leri ve dosyalarıyla yerel bilgisayarımıza kopyalar.
Git Kullanıcı Bilgilerini Yapılandırma
Git’i ilk kez kullanırken, adınızı ve e-posta adresinizi yapılandırmanız gerekir:
git config --global user.name "Adınız Soyadınız"
git config --global user.email "email@example.com"
Yapılandırmaları görmek için:
git config --list
İlk Git Deposu (Repository) Oluşturma
Git deposu oluşturmak için aşağıdaki adımları takip edebilirsiniz:
mkdir ilk_git_projesi
cd ilk_git_projesi
git init
Bu komutlar, proje klasörünü oluşturur ve Git deposu başlatır.
Git Takibi ve Git Logları
Git ile bir dosyanın durumunu kontrol etmek için:
git status
Bir dosyayı takibe almak için:
git add dosya.txt
Değişiklikleri işlemek için (commit):
git commit -m "İlk commit"
Logları görüntülemek için:
git log
GitHub ile Git Kullanımı
GitHub’da Uzaktan Repo Oluşturma
GitHub’da yeni bir repository oluşturduktan sonra, yerel repo ile bağlamak için:
git remote add origin https://github.com/kullaniciadi/repo_adi.git
git branch -M main
git push -u origin main
Yerel ve GitHub İçin Kimlik Doğrulama Ayarlama
GitHub’da SSH anahtarını kullanarak kimlik doğrulaması yapmak için:
ssh-keygen -t rsa -b 4096 -C "email@example.com"
cat ~/.ssh/id_rsa.pub
Bu anahtarı GitHub hesabınıza ekleyin.
Git’te Branch (Dal) Oluşturma
Yeni bir dal oluşturmak için:
git branch yeni_branch
Dal değiştirmek için:
git checkout yeni_branch
veya
git switch yeni_branch
Branch’leri Birleştirme (Merge İşlemi)
Branch’leri birleştirmek için önce ana branch’e geçiş yapın:
git checkout main
Ardından merge işlemi:
git merge yeni_branch
Git’te Önceki Duruma Geri Dönme
Son commit’i geri almak için:
git reset --soft HEAD~1
Belirli bir commit’e dönmek için:
git checkout <commit_id>
Çalışma Dizini ve Sahneleme Alanını Karşılaştırma
Mevcut değişiklikleri görmek için:
git diff
Sahneleme alanındaki değişiklikleri görmek için:
git diff --staged
Commit’leri Karşılaştırma
İki commit arasındaki farkları görmek için:
git diff commit1 commit2
Branch (Dal) Kavramı
Branch, projede farklı özellikler eklemek veya geliştirmeler yapmak için kullanılan paralel çalışma ortamlarıdır. Git’in en büyük avantajlarından biri branch yapısıdır.
Git Stash Kullanımı
Stash Nedir?
Git stash, üzerinde çalıştığınız ancak henüz commit etmeye hazır olmadığınız değişiklikleri geçici olarak kaydetmenizi sağlayan güçlü bir Git komutudur. Bu özellik, özellikle acil bir hata düzeltmesi gerektiğinde veya farklı bir branch’e geçmeniz gerektiğinde çok kullanışlıdır.
Temel Stash Komutları
# Mevcut değişiklikleri stash'e kaydetme
git stash save "değişiklik açıklaması"
# veya basitçe
git stash
# Stash listesini görüntüleme
git stash list
# Son stash'i geri yükleme ve listeden silme
git stash pop
# Son stash'i geri yükleme ama listede tutma
git stash apply
# Belirli bir stash'i geri yükleme
git stash apply stash@{2}
# Belirli bir stash'i silme
git stash drop stash@{0}
# Tüm stash'leri silme
git stash clear
Stash Kullanım Senaryoları
- Acil Durum Değişiklikleri
# Mevcut değişiklikleri kaydet
git stash
# Hotfix branch'ine geç
git checkout hotfix
# Düzeltmeleri yap ve commit et
git commit -am "kritik hata düzeltmesi"
# Ana branch'e geri dön
git checkout main
# Önceki değişiklikleri geri al
git stash pop
- Branch Değişimi
# Yanlış branch'te çalışıyorsanız
git stash
git checkout doğru-branch
git stash pop
- Kısmi Stash
# Sadece belirli dosyaları stash'e alma
git stash push -m "belirli dosyalar" dosya1.js dosya2.css
İleri Düzey Stash Özellikleri
- Stash Include Untracked
# Takip edilmeyen dosyaları da stash'e dahil etme
git stash -u
- Interaktif Stash
# Değişikliklerin bir kısmını seçerek stash'leme
git stash -p
- Stash Branch
# Stash'ten yeni bir branch oluşturma
git stash branch yeni-branch-adı stash@{0}
En İyi Uygulamalar
- Her stash için açıklayıcı bir mesaj kullanın
- Uzun süre stash’te değişiklik tutmaktan kaçının
- Düzenli olarak stash listesini temizleyin
- Karmaşık değişiklikler için branch kullanmayı tercih edin
Yaygın Hatalar ve Çözümleri
- Stash Çakışmaları
# Çakışma durumunda
git stash show -p stash@{0} > değişiklikler.patch
git stash drop stash@{0}
# Patch'i manuel olarak uygulayın
- Yanlışlıkla Stash Drop
# Son silinen stash'i kurtarma
git fsck --no-reflog | grep commit | cut -d' ' -f3 | xargs git show
Sonuç
Git, modern yazılım geliştirmenin temel yapı taşlarından biri olarak endüstri standardı haline gelmiştir. Bu güçlü versiyon kontrol sistemi, yazılım projelerinin her aşamasında kritik bir rol oynar:
- Dağıtık mimarisi sayesinde ekip üyelerinin eşzamanlı çalışmasını mümkün kılar
- Kod değişikliklerinin güvenli ve izlenebilir şekilde yönetilmesini sağlar
- Branch yapısı ile paralel geliştirme süreçlerini destekler
- Merge ve rebase özellikleriyle kod entegrasyonunu kolaylaştırır
- CI/CD pipeline’larının temelini oluşturur
Günümüzde, mikroservis mimarileri, DevOps pratikleri ve çevik metodolojiler gibi modern yazılım geliştirme yaklaşımlarının tümü Git’in sağladığı altyapı üzerine inşa edilmiştir. Bu nedenle, Git’in etkin kullanımı, yazılım projelerinin başarısında kritik bir faktördür.
Git’in sunduğu bu kapsamlı özellikler ve araçlar, yazılım geliştirme süreçlerini daha verimli, güvenli ve ölçeklenebilir hale getirirken, ekiplerin daha hızlı ve kaliteli kod üretmesine olanak tanır.
Leave a Reply