İçindekiler
GitHub Nedir?
GitHub, yazılım geliştirme projelerini barındıran ve versiyon kontrolü sağlayan dünyanın en büyük platformudur. 100 milyondan fazla geliştirici ve 420 milyondan fazla repository ile açık kaynak yazılımın merkezi haline gelmiştir.
Git versiyon kontrol sistemi üzerine inşa edilen GitHub, kod paylaşımı, işbirliği, code review, CI/CD ve proje yönetimi için kullanılır. Microsoft tarafından 2018'de satın alınmıştır.
Temel Kavramlar
Repository (Repo)
Proje dosyalarınızın ve tüm versiyon geçmişinin depolandığı yer. Public veya Private olabilir.
Commit
Yaptığınız değişikliklerin anlık görüntüsü. Her commit bir mesaj ve benzersiz hash içerir.
Branch
Ana koddan bağımsız geliştirme dalı. Yeni özellikler veya düzeltmeler için kullanılır.
Pull Request (PR)
Değişiklikleri ana koda birleştirme talebi. Code review ve tartışma imkanı sağlar.
Fork
Başka birinin projesinin kendi hesabınıza kopyası. Açık kaynak katkıları için kullanılır.
Star & Watch
Beğendiğiniz projeleri star ile işaretleyin, watch ile güncellemelerden haberdar olun.
Git İş Akışı (Workflow)
Dosya düzenleme
git add
git commit
git push
Nasıl Çalışır?
GitHub.com'da Hesap Oluşturun
github.com adresine gidin, ücretsiz hesap oluşturun. Profesyonel bir kullanıcı adı seçin (gerçek adınız veya tutarlı bir nick).
Git'i Bilgisayarınıza Kurun
# macOS
brew install git
# Windows
winget install Git.Git
# Linux
sudo apt-get install git
# İlk konfigürasyon
git config --global user.name "Adınız"
git config --global user.email "email@ornek.com"
SSH Key Oluşturun (Önerilir)
# SSH key oluştur
ssh-keygen -t ed25519 -C "email@ornek.com"
# Key'i kopyala
cat ~/.ssh/id_ed25519.pub
# GitHub > Settings > SSH Keys > New SSH Key
# Kopyaladığınız key'i yapıştırın
İlk Repo'nuzu Oluşturun
# Yeni proje oluştur
mkdir my-first-project && cd my-first-project
git init
# README ekle
echo "# My First Project" > README.md
git add README.md
git commit -m "Initial commit"
# GitHub'a bağla ve push et
git remote add origin git@github.com:username/my-first-project.git
git push -u origin main
Branching (Dallanma)
Branching, ana kodunuzu bozmadan yeni özellikler geliştirmenizi sağlar. Her branch bağımsız bir "paralel evren" gibi düşünün.
# Yeni branch oluştur ve geç
git checkout -b feature/user-auth
# Branch'ler arası geçiş
git checkout main
git checkout feature/user-auth
# Branch listesi
git branch -a
# Branch silme
git branch -d feature/completed-feature
# Remote branch silme
git push origin --delete feature/old-branch
Branch Stratejileri
main / master
Production-ready kod. Direkt commit yapılmaz, sadece PR ile merge edilir.
develop
Aktif geliştirme dalı. Feature branch'ler buraya merge edilir.
feature/*
Yeni özellikler için. Örnek: feature/login, feature/payment
hotfix/*
Acil düzeltmeler. main'den dallanır, main'e merge edilir.
Pull Request
Pull Request (PR), yaptığınız değişiklikleri ana dala birleştirmek için kullanılır. Code review, tartışma ve CI/CD testlerinin çalıştırılması PR sürecinin parçasıdır.
PR Best Practices
- Küçük PR'lar: Her PR tek bir özellik veya düzeltme içersin (max 400 satır)
- Açıklayıcı başlık: "Fix bug" yerine "Fix: JWT token expiry causing 401 on refresh"
- Detaylı açıklama: Ne değişti, neden değişti, nasıl test edilir
- Screenshot ekleyin: UI değişikliklerinde öncesi/sonrası görüntüleri
- Self-review: PR'ı göndermeden önce kendi kodunuzu inceleyin
- CI/CD testleri: Tüm testlerin geçtiğinden emin olun
PR Oluşturma (CLI ile)
# GitHub CLI kurulumu
brew install gh # macOS
winget install GitHub.cli # Windows
# Login
gh auth login
# PR oluştur
gh pr create --title "feat: Add user authentication" \
--body "## Summary
- JWT-based authentication
- Login/register forms
- Password reset flow
## Test Plan
- [ ] Login with valid credentials
- [ ] Register new account
- [ ] Reset password flow"
# PR listele
gh pr list
# PR incele
gh pr view 42
# PR merge et
gh pr merge 42 --squash
GitHub Actions (CI/CD)
GitHub Actions, kod push veya PR gibi olaylara tepki veren otomatik iş akışlarıdır. Test çalıştırma, build, deploy gibi CI/CD süreçlerini otomatize eder.
# .github/workflows/ci.yml
name: CI Pipeline
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- run: npm ci
- run: npm run lint
- run: npm run type-check
- run: npm test
deploy:
needs: test
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
steps:
- uses: actions/checkout@v4
- run: npm ci && npm run build
# Deploy adımları...
En İyi 100 Repository
AI yazılım takımınız. 137 agent, 269 skill, 53 hook. Kendi kendine öğrenen, çoklu-agent sürüsü, projeler arası eğitim. Claude Code üzerine inşa edilmiş açık kaynak vibe coding ekosistemi.
Ücretsiz kodlama eğitim platformu
Geliştirici yol haritaları
Harika listeler koleksiyonu
Ücretsiz API listesi
Sistem tasarımı öğrenme kaynağı
Facebook React kütüphanesi
React framework - Vercel
Google ML framework
LLM uygulama framework
Terminal Komutları — Cheatsheet
# ═══════════════════════════════════
# GIT KOMUTLARI CHEATSHEET
# ═══════════════════════════════════
# --- Konfigürasyon ---
git config --global user.name "Adınız"
git config --global user.email "email@ornek.com"
git config --global init.defaultBranch main
# --- Repo Başlatma ---
git init # Yeni repo
git clone https://github.com/user/repo.git # Klonla
# --- Değişiklik Yönetimi ---
git status # Durum kontrolü
git add . # Tümünü stage'e al
git add dosya.txt # Tekil dosya
git commit -m "Açıklama" # Commit
git push origin main # Push
git pull origin main # Pull (fetch + merge)
# --- Branch İşlemleri ---
git branch # Branch listesi
git checkout -b feature/login # Yeni branch oluştur
git checkout main # Branch değiştir
git merge feature/login # Merge
git branch -d feature/login # Sil
# --- Geçmiş ---
git log --oneline --graph # Görsel log
git diff # Değişiklikleri gör
git diff --staged # Stage'deki değişiklikler
# --- Geri Alma ---
git stash # Geçici kaydet
git stash pop # Geri yükle
git reset --soft HEAD~1 # Son commit'i geri al
git checkout -- dosya.txt # Dosya değişikliğini geri al
# --- Remote ---
git remote add origin URL # Remote ekle
git remote -v # Remote listesi
git fetch origin # Değişiklikleri al (merge etme)