Git Temelleri

Repository oluşturma, commit, push, pull işlemleri ve branch yönetimi

Kubedo Academy’e hoş geldiniz! Bu laboratuvarda Git kurulumu, temel komutlar, branching ve uzak repository kullanımını öğreneceksiniz.


Zorluk seviyesi: Başlangıç
Süre: Yaklaşık 40 dakika


1. Git Nedir?

Git, Linus Torvalds tarafından 2005 yılında Linux kernel geliştirmesi için oluşturulan dağıtık versiyon kontrol sistemidir.

Neden Git?

ÖzellikAçıklama
DağıtıkHer geliştirici tam bir kopya klonlar
HızlıÇoğu işlem lokal yapılır
BranchingKolay ve hafif branch oluşturma
GüvenliSHA-1 hash ile değişiklik bütünlüğü
ÜcretsizAçık kaynak yazılım

Git vs SVN

ÖzellikGitSVN
MimariDağıtıkMerkezi
Offline çalışma✅ Tam❌ Sınırlı
BranchingHafifAğır
HızÇok hızlıOrta

2. Git Kurulumu

Ubuntu/Debian

Terminal
$ apt update && apt install git -y

macOS

brew install git

Windows

Git for Windows indirin ve kurun.

Kurulum Doğrulama

Terminal
$ git --version

3. Git Yapılandırması

Temel Ayarlar

Terminal
$ git config --global user.name "Adınız Soyadınız"
git config --global user.email "email@example.com"

Diğer Faydalı Ayarlar

# Varsayılan editör
git config --global core.editor vim

# Varsayılan branch adı
git config --global init.defaultBranch main

# Renklendirme
git config --global color.ui auto

# Alias tanımlama
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit

Ayarları Görüntüleme

Terminal
$ git config --list

4. Repository Oluşturma

Yeni Repository

Terminal
$ mkdir my-project
cd my-project
git init

Mevcut Projeyi Clone’lama

git clone https://github.com/user/repo.git
git clone git@github.com:user/repo.git  # SSH ile

Repository Durumu

Terminal
$ git status

5. Temel Git İş Akışı

Git Alanları

Working Directory → Staging Area → Repository
     (git add)        (git commit)
AlanAçıklama
Working DirectoryDosyaları düzenlediğiniz alan
Staging AreaCommit’e hazır değişiklikler
RepositoryKalıcı commit geçmişi

Dosya Ekleme (Staging)

Terminal
$ echo "# My Project" > README.md
git add README.md

Tüm dosyaları ekleme:

git add .
git add -A

Commit

Terminal
$ git commit -m "İlk commit - README eklendi"

Detaylı commit mesajı:

git commit  # Editör açılır

[!TIP] Commit mesajları için Conventional Commits standardını kullanın: feat:, fix:, docs:, chore: gibi.


6. Değişiklikleri Görüntüleme

Log - Commit Geçmişi

Terminal
$ git log
git log --oneline
git log --graph --oneline --all

Diff - Farkları Görme

# Working directory vs staging
git diff

# Staging vs son commit
git diff --staged

# İki commit arası
git diff abc123..def456

Show - Commit Detayı

git show abc123

7. Branch (Dal) Yönetimi

Branch’ler paralel geliştirme yapmanızı sağlar.

Branch Listeleme

Terminal
$ git branch
git branch -a  # Remote dahil

Yeni Branch Oluşturma

Terminal
$ git branch feature/login
git checkout feature/login

Veya tek komutla:

git checkout -b feature/login

Branch Değiştirme

git checkout main
git switch main  # Git 2.23+

Branch Silme

git branch -d feature/login      # Merge edilmişse
git branch -D feature/login      # Zorla sil

8. Merge (Birleştirme)

Fast-forward Merge

git checkout main
git merge feature/login

Merge Commit

git merge --no-ff feature/login

Conflict Çözümleme

Conflict oluştuğunda:

<<<<<<< HEAD
Mevcut içerik
=======
Gelen içerik
>>>>>>> feature/login
  1. Dosyayı düzenleyin
  2. Conflict işaretlerini kaldırın
  3. git add <dosya>
  4. git commit

[!CAUTION] Merge conflict’leri dikkatlice çözün. Yanlış çözüm kod kaybına neden olabilir!


9. Uzak Repository (Remote)

Remote Ekleme

Terminal
$ git remote add origin https://github.com/user/repo.git
git remote -v

Push - Değişiklikleri Gönderme

git push origin main
git push -u origin main  # Upstream ayarla
git push                  # Upstream ayarlıysa

Pull - Değişiklikleri Çekme

git pull origin main
git pull                  # Upstream ayarlıysa

Fetch - Sadece İndirme

git fetch origin
git fetch --all

[!NOTE] git pull = git fetch + git merge


10. Geri Alma İşlemleri

Dosyayı Geri Alma

# Staging'den çıkar
git reset HEAD <dosya>
git restore --staged <dosya>  # Git 2.23+

# Working directory'ye geri al
git checkout -- <dosya>
git restore <dosya>  # Git 2.23+

Son Commit’i Düzeltme

git commit --amend -m "Düzeltilmiş mesaj"

Commit’leri Geri Alma

# Soft reset (değişiklikler korunur)
git reset --soft HEAD~1

# Mixed reset (staging temizlenir)
git reset HEAD~1

# Hard reset (her şey silinir)
git reset --hard HEAD~1

[!CAUTION] git reset --hard kalıcıdır! Dikkatli kullanın.


11. .gitignore

Takip edilmemesi gereken dosyaları belirler.

Örnek .gitignore

# Derlenmiş dosyalar
*.class
*.o
*.pyc

# Dizinler
node_modules/
vendor/
dist/
build/

# IDE dosyaları
.idea/
.vscode/
*.swp

# Ortam dosyaları
.env
.env.local

# İşletim sistemi
.DS_Store
Thumbs.db

Global gitignore

git config --global core.excludesfile ~/.gitignore_global

12. Faydalı Komutlar

KomutAçıklama
git stashDeğişiklikleri geçici sakla
git stash popSaklananları geri getir
git tag v1.0Versiyon etiketi
git blame <dosya>Satır bazlı değişiklik geçmişi
git reflogTüm HEAD değişiklikleri
git cherry-pick <commit>Belirli commit’i al
git rebase mainBranch’i yeniden temelle

Konu Tekrarı - Kısa Sınav


Sonraki Adımlar

  • GitHub/GitLab: Remote repository yönetimi
  • Pull Request: Kod review süreci
  • GitFlow: Branch stratejisi
  • Git Hooks: Otomasyon scriptleri
  • Rebase vs Merge: İleri seviye birleştirme