Ana Site Wiki GitHub

🛠️ Modül 2: Temel Teknik Beceriler

Git komutları, Markdown ve lisanslar hakkında temel bilgiler.

~1.5 saat
Başlangıç

📋 Temel Git Komutları

Bu 6 temel komut, günlük Git kullanımınızın %90'ını oluşturacak:

# Komut Açıklama Analoji
1 git init Klasörü Git projesine çevirir 📦 Kutu oluşturma
2 git status Değişiklikleri gösterir 👀 Durumu kontrol
3 git add Değişiklikleri hazırlar 📋 Listeye ekleme
4 git commit Değişiklikleri kaydeder 💾 Kaydetme
5 git push Değişiklikleri gönderir 📤 Yükleme
6 git pull Değişiklikleri çeker 📥 İndirme

1. git init

Boş bir klasörü Git repository'sine dönüştürür:

Terminal
# Yeni klasör oluştur ve git başlat
mkdir proje-adi
cd proje-adi
git init

# Çıktı: Initialized empty Git repository in .../proje-adi/.git/

2. git status

Repository'nin mevcut durumunu gösterir:

Terminal
git status

# Hangi dosyalar değişti?
# Hangi dosyalar staged?
# Hangi branch'tayız?

3. git add

Değişiklikleri staging area'ya ekler:

Terminal
# Tek dosya ekle
git add dosya.txt

# Tüm değişiklikleri ekle
git add .

# Belirli uzantıdaki dosyaları ekle
git add *.js

4. git commit

Staged değişiklikleri kalıcı olarak kaydeder:

Terminal
# Mesaj ile commit
git commit -m "feat: login sayfası eklendi"

# Add + Commit birlikte (sadece tracked dosyalar)
git commit -am "fix: buton rengi düzeltildi"

5. git push

Yerel commit'leri uzak repository'ye gönderir:

Terminal
# origin remote'una main branch'ı gönder
git push origin main

# Varsayılan remote ve branch'a gönder
git push

6. git pull

Uzak repository'den değişiklikleri çeker:

Terminal
# Uzak değişiklikleri indir ve birleştir
git pull origin main

# Varsayılan ayarlarla çek
git pull

7. git log

Commit geçmişini gösterir - projenin hikayesini okuyun:

Terminal
# Son commit'leri görüntüle
git log

# Tek satırda özet görünüm
git log --oneline

# Grafik görünüm (branch'ları görselleştir)
git log --oneline --graph --all

# Son 5 commit
git log -5

# Örnek çıktı (--oneline):
# a1b2c3d feat: login sayfası eklendi
# e4f5g6h fix: navbar hatası düzeltildi
# i7j8k9l docs: README güncellendi

8. git diff

Dosyalardaki değişiklikleri satır satır gösterir:

Terminal
# Henüz staged olmayan değişiklikleri gör
git diff

# Staged değişiklikleri gör
git diff --staged

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

# Örnek çıktı:
# - eski satır (kaldırıldı, kırmızı)
# + yeni satır (eklendi, yeşil)
GitHub'da Diff Görünümü:
📎 Örnek commit diff → | 📎 Örnek PR diff →

📊 Git Workflow Diyagramı

🙈 .gitignore Dosyası

.gitignore dosyası, Git'e hangi dosyaların takip edilmemesi gerektiğini söyler. Bu sayede gereksiz dosyalar repository'nize eklenmez.

Neden Önemli? node_modules, .env dosyaları, IDE ayarları gibi dosyaları paylaşmamalısınız. Hem güvenlik hem de temizlik için!

📝 Temel Kullanım

.gitignore
# Yorum satırı

# Tek dosya
.env
secrets.json

# Klasör (sondaki / önemli!)
node_modules/
dist/
build/
.cache/

# Uzantıya göre
*.log
*.tmp
*.pyc

# Pattern (glob)
*.local
.env.*

# Hariç tutma (!) 
!.env.example

🎯 Yaygın Pattern'ler

Pattern Açıklama Örnek Eşleşme
*.log Tüm .log dosyaları error.log, debug.log
build/ build klasörü ve içeriği build/app.js
**/temp Her yerdeki temp klasörü src/temp, lib/temp
!important.log Hariç tut (ignore etme) important.log dahil edilir
doc/*.txt doc/ içindeki txt dosyaları doc/readme.txt

💻 Dil/Framework Örnekleri

Node.js Projesi
# Dependencies
node_modules/

# Environment
.env
.env.local
.env.*.local

# Build
dist/
build/
.next/

# IDE
.vscode/
.idea/

# OS
.DS_Store
Thumbs.db

# Logs
npm-debug.log*
yarn-debug.log*
Python Projesi
# Virtual environment
venv/
.venv/
env/

# Byte-compiled files
__pycache__/
*.py[cod]
*.pyo

# Distribution
dist/
build/
*.egg-info/

# IDE
.idea/
.vscode/
*.swp

# Environment
.env
.env.local

🔧 Git Komutları

Terminal
# .gitignore oluştur
touch .gitignore

# Zaten tracked dosyayı ignore etmek için
git rm --cached dosya.txt
git rm -r --cached klasor/

# Ignore edilen dosyaları listele
git status --ignored

# Global gitignore ayarla (tüm projeler için)
git config --global core.excludesfile ~/.gitignore_global
Pro İpucu: Yeni proje başlatırken GitHub'da repo oluştururken "Add .gitignore" seçeneğini kullanın. Dilinize göre otomatik şablon oluşturur!

📝 Markdown

Markdown, README dosyaları ve dokümantasyon için kullanılan hafif bir işaretleme dilidir.

Temel Söz Dizimi

Markdown
# Başlık 1
## Başlık 2
### Başlık 3

**Kalın metin** ve *italik metin*

- Madde 1
- Madde 2
  - Alt madde

1. Sıralı madde
2. Sıralı madde

[Link](https://example.com)
![Resim](image.png)

`inline kod` ve

```javascript
// Kod bloğu
console.log("Merhaba");
```

> Alıntı bloğu

| Tablo | Başlık |
|-------|--------|
| Veri  | Veri   |

📄 Lisanslar

Projenizi paylaşırken bir lisans seçmek önemlidir:

Lisans Özellik Kullanım
MIT En esnek Ticari kullanım, değiştirme, dağıtım serbest
Apache 2.0 Patent koruması MIT gibi + patent hakları
GPL v3 Copyleft Türev çalışmalar da açık kaynak olmalı
Unlicense Public domain Hiçbir kısıtlama yok
Öneri: Emin değilseniz MIT lisansını seçin. En yaygın ve esnek lisanstır.