0%

Git ile Etkili Versiyon Kontrolü

Projelerinizde Git'i daha etkili kullanmak için ipuçları ve stratejiler.

📅
👤CodeBros
⏱️5 dakikada okunur
GitVersion ControlGitHub
Git ile Etkili Versiyon Kontrolü - Blog yazısı öne çıkan görseli

Git ile Etkili Versiyon Kontrolü

Git, modern yazılım geliştirmede vazgeçilmez bir araçtır. Bu yazıda Git'i daha etkili kullanmak için stratejiler ve en iyi uygulamaları paylaşacağım.

Git'in Temelleri

Git, dağıtık versiyon kontrol sistemi olarak projelerinizin geçmişini takip eder ve değişiklikleri yönetir.

Temel Git Komutları

# Repository oluşturma
git init
git clone https://github.com/kullanici/proje.git

# Değişiklikleri takip etme
git add .
git add dosya.txt
git commit -m "Anlamlı commit mesajı"

# Remote repository ile çalışma
git push origin main
git pull origin main
git fetch origin

Etkili Branch Stratejileri

Git Flow Modeli

# Feature branch oluşturma
git checkout -b feature/yeni-ozellik
git checkout main
git merge feature/yeni-ozellik

# Release branch
git checkout -b release/v1.2.0
git checkout main
git merge release/v1.2.0
git tag v1.2.0

# Hotfix branch
git checkout -b hotfix/kritik-hata
git checkout main
git merge hotfix/kritik-hata

GitHub Flow (Daha Basit)

# Feature branch oluştur
git checkout -b feature-branch
# Değişiklikleri yap
git add .
git commit -m "Feature eklendi"
git push origin feature-branch
# Pull request oluştur
# Merge sonrası branch'i sil
git branch -d feature-branch

Commit En İyi Uygulamaları

Anlamlı Commit Mesajları

# ❌ Kötü commit mesajları
git commit -m "değişiklik"
git commit -m "bug fix"
git commit -m "update"

# ✅ İyi commit mesajları
git commit -m "feat: kullanıcı girişi özelliği eklendi"
git commit -m "fix: null pointer exception düzeltildi"
git commit -m "docs: README.md güncellendi"
git commit -m "refactor: authentication servisini optimize ettim"

Conventional Commits

# Format: <tip>(<kapsam>): <açıklama>
feat: yeni özellik eklendi
fix: hata düzeltildi
docs: dokümantasyon güncellendi
style: kod formatı düzenlendi
refactor: kod yapısı iyileştirildi
test: test eklendi
chore: build süreçleri güncellendi

Merge vs Rebase

Merge Kullanımı

git checkout main
git merge feature-branch

# Merge commit oluşturur
# Geçmiş korunur ama daha karmaşık görünür

Rebase Kullanımı

git checkout feature-branch
git rebase main

# Linear geçmiş oluşturur
# Daha temiz görünür ama geçmiş yeniden yazılır

İnteraktif Rebase

# Son 3 commit'i düzenle
git rebase -i HEAD~3

# Rebase seçenekleri:
# pick: commit'i olduğu gibi bırak
# reword: commit mesajını değiştir
# edit: commit'i düzenle
# squash: önceki commit ile birleştir
# drop: commit'i sil

Conflict Çözümü

Merge Conflict'ları

# Conflict oluştuğunda
git status  # Conflicted dosyaları gör

# Dosyayı düzenle
<<<<<<< HEAD
mevcut kod
=======
gelen kod
>>>>>>> feature-branch

# Conflict çözüldükten sonra
git add resolved-file.txt
git commit -m "merge conflict çözüldü"

Merge Tool Kullanımı

# Visual merge tool
git config --global merge.tool vimdiff
git mergetool

# VS Code kullanımı
git config --global merge.tool vscode
git config --global mergetool.vscode.cmd 'code --wait $MERGED'

Git Hooks ile Otomasyon

Pre-commit Hook

#!/bin/sh
# .git/hooks/pre-commit

# Linting kontrolü
npm run lint
if [ $? -ne 0 ]; then
  echo "Linting hatası! Commit iptal edildi."
  exit 1
fi

# Test çalıştırma
npm test
if [ $? -ne 0 ]; then
  echo "Testler başarısız! Commit iptal edildi."
  exit 1
fi

Pre-push Hook

#!/bin/sh
# .git/hooks/pre-push

# Build kontrolü
npm run build
if [ $? -ne 0 ]; then
  echo "Build başarısız! Push iptal edildi."
  exit 1
fi

Git Aliases ile Verimlilik

# ~/.gitconfig dosyasına ekle
[alias]
    st = status
    co = checkout
    br = branch
    ci = commit
    unstage = reset HEAD --
    last = log -1 HEAD
    visual = !gitk
    
    # Log görünümü
    lg = log --oneline --graph --decorate --all
    
    # Undo last commit (keep changes)
    undo = reset HEAD~1 --mixed
    
    # Quick commit
    ac = !git add -A && git commit -m
    
    # Delete merged branches
    cleanup = !git branch --merged | grep -v '\\*' | xargs -n 1 git branch -d

.gitignore En İyi Uygulamaları

Node.js Projesi için

# Dependencies
node_modules/
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Production builds
/build
/dist

# Environment variables
.env
.env.local
.env.production

# IDE
.vscode/
.idea/
*.swp
*.swo

# OS
.DS_Store
Thumbs.db

# Logs
logs/
*.log

Python Projesi için

# Byte-compiled / optimized
__pycache__/
*.py[cod]
*$py.class

# Virtual environments
venv/
env/
ENV/

# IDE
.vscode/
.idea/
*.pyc

# Database
*.db
*.sqlite3

# Environment
.env

GitHub/GitLab İpuçları

Pull Request En İyi Uygulamaları

## PR Başlığı
feat: kullanıcı profil sayfası eklendi

## Açıklama
- Kullanıcı profil bilgilerini görüntüleme
- Profil fotoğrafı yükleme özelliği
- Kullanıcı bilgilerini düzenleme formu

## Test Edilenler
- [x] Profil sayfası yükleniyor
- [x] Fotoğraf yükleme çalışıyor
- [x] Form validasyonları doğru

## Screenshots
![Profil Sayfası](screenshot.png)

Issue Şablonları

## Bug Report

**Açıklama**
Kısa ve net bug açıklaması.

**Beklenen Davranış**
Ne olması gerekiyor?

**Mevcut Davranış**
Ne oluyor?

**Adımlar**
1. Şu sayfaya git
2. Şu butona tıkla
3. Hatayı gör

**Ortam**
- OS: Windows 10
- Browser: Chrome 96
- Version: v1.2.3

Git Güvenliği

Sensitive Data Protection

# Yanlışlıkla commit edilen secret'ları temizleme
git filter-branch --force --index-filter \
'git rm --cached --ignore-unmatch secrets.txt' \
--prune-empty --tag-name-filter cat -- --all

# GitHub secret taraması
git secrets --install
git secrets --register-aws
git secrets --scan

GPG Signature

# GPG key oluşturma
gpg --gen-key

# Git'e GPG key'i tanıtma
git config --global user.signingkey [KEY_ID]
git config --global commit.gpgsign true

# Signed commit
git commit -S -m "signed commit"

Git Performans Optimizasyonu

Large File Management

# Git LFS kurulumu
git lfs install

# Large dosyaları track etme
git lfs track "*.psd"
git lfs track "*.zip"
git lfs track "*.mp4"

# .gitattributes dosyası
*.psd filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text

Repository Temizliği

# Repository boyutunu küçültme
git gc --aggressive --prune=now

# Unused objects silme
git fsck --unreachable
git prune

# Repository istatistikleri
git count-objects -vH

Sonuç

Etkili Git kullanımı için:

  1. Anlamlı commit mesajları yazın
  2. Branch stratejisi belirleyin ve uygulayın
  3. Conflict'ları düzenli olarak çözün
  4. Hooks ile otomatik kontroller kurun
  5. Aliases ile işleri hızlandırın
  6. Security konularına dikkat edin

Git'i doğru kullanmak sadece kod geçmişinizi korumaz, aynı zamanda takım çalışmasını da kolaylaştırır.

Kaynaklar

K
CodeBros
CodeBros - Profesyonel Yazılım Geliştirme Şirketi
Paylaş:
WhatsApp
WhatsApp