GitHub Nedir?
Giriş — Kod Neden Bir Eve İhtiyaç Duyar?
Git ile projelerini yerel bilgisayarında takip edebilirsin — commit'ler atarsın, branch'ler oluşturursun, tarihçeyi yönetirsin. Ama bir düşün: bilgisayarın bozulursa ne olacak? Ekibindeki bir geliştiriciyle aynı proje üzerinde çalışman gerekirse? Ya da dünyanın öbür ucundaki biri senin açık kaynak projene katkı yapmak isterse?
İşte tam burada uzak bir barınma noktasına — bir hosting platformuna — ihtiyaç duyarsın. Ve bu platformların en popüleri, en geniş topluluğa sahip olanı: GitHub.
Bu derste GitHub'ın ne olduğunu, rakiplerinden nasıl ayrıştığını, nasıl bir repository oluşturacağını ve her projenin olmazsa olmazları olan README ve LICENSE dosyalarını öğreneceksin.
GitHub: Git'in Sosyal Ağı
Analoji — Kütüphane ve Kütüphaneci
Git'i bir kişisel defter gibi düşün. İçine notlar alırsın, sayfaları düzenlersin, bazı sayfaları yırtıp yeniden yazarsın. Ama bu defter sadece sende.
GitHub ise bir kütüphane. Defterinin bir kopyasını buraya koyarsın. Herkes görebilir (public ise), okuyabilir, hatta "şu sayfayı şöyle değiştirsen daha iyi olur" diye öneri sunabilir. Kütüphaneci (GitHub) ise bu süreçleri kolaylaştırır: kimlerin ne değiştirdiğini takip eder, tartışma ortamı sağlar, otomatik kalite kontrolleri yapar.
Git = versiyon kontrol aracı (yerel). GitHub = Git repository'lerini barındıran, işbirliği ve proje yönetimi sağlayan web platformu.
GitHub Ne Sağlar?
GitHub, Git'in üzerine şu katmanları ekler:
| Özellik | Git (Tek Başına) | GitHub (Platform) |
|---|---|---|
| Versiyon kontrolü | ✅ | ✅ |
| Uzak yedekleme | ❌ | ✅ |
| Ekip işbirliği | ❌ | ✅ (PR, review, teams) |
| Issue takibi | ❌ | ✅ |
| CI/CD (otomasyon) | ❌ | ✅ (GitHub Actions) |
| Sosyal özellikler | ❌ | ✅ (star, fork, follow) |
| Web arayüzü | ❌ | ✅ |
| Paket barındırma | ❌ | ✅ (GitHub Packages) |
| Güvenlik taraması | ❌ | ✅ (Dependabot, secret scanning) |
Kısa Tarihçe
2008 — Tom Preston-Werner, Chris Wanstrath, PJ Hyett ve Scott Chacon tarafından kuruldu
2008-2018 — Açık kaynak topluluğunun kalbi haline geldi
2018 — Microsoft, GitHub'ı 7.5 milyar dolara satın aldı
2020 — GitHub, npm'i bünyesine kattı
2021 — GitHub Copilot duyuruldu (AI destekli kod yazma)
2024 — 100 milyondan fazla geliştirici, 400 milyondan fazla repository
💡 Bilgi: Bugün neredeyse tüm büyük açık kaynak projeler (Linux kernel, React, VS Code, TensorFlow, Kubernetes…) GitHub üzerinde barınıyor.
GitHub vs GitLab vs Bitbucket
GitHub tek seçenek değil. Rakipleri de güçlü platformlar. Hangisini seçmen gerektiğini anlamak için karşılaştıralım:
Genel Karşılaştırma
┌─────────────────┬──────────────┬──────────────┬──────────────┐
│ Özellik │ GitHub │ GitLab │ Bitbucket │
├─────────────────┼──────────────┼──────────────┼──────────────┤
│ Kurucu │ 2008 │ 2011 │ 2008 │
│ Sahip │ Microsoft │ GitLab Inc. │ Atlassian │
│ Topluluk │ En büyük │ Büyük │ Orta │
│ CI/CD │ Actions │ GitLab CI │ Pipelines │
│ Self-hosted │ Enterprise │ CE/EE (ücretsiz)│ Data Center│
│ Ücretsiz Plan │ Cömert │ Cömert │ 5 kullanıcı │
│ Entegrasyon │ Geniş │ Dahili │ Jira/Trello │
│ Açık Kaynak │ Merkez │ Güçlü │ Zayıf │
│ Container Reg. │ ✅ │ ✅ │ ❌ │
│ Wiki │ ✅ │ ✅ │ ✅ │
│ Paket Registry │ ✅ │ ✅ │ ❌ │
└─────────────────┴──────────────┴──────────────┴──────────────┘GitHub'ın Güçlü Yanları
En büyük topluluk — Açık kaynak projelerin büyük çoğunluğu burada
GitHub Actions — Güçlü ve esnek CI/CD
GitHub Copilot — AI destekli geliştirme deneyimi
Zengin entegrasyon — Binlerce 3rd party araçla uyumlu (Slack, Jira, Vercel, Netlify…)
GitHub Pages — Ücretsiz statik site barındırma
Marketplace — Hazır action'lar ve uygulamalar
GitLab'ın Güçlü Yanları
Dahili DevOps — CI/CD, container registry, monitoring hepsi tek platformda
Self-hosted (ücretsiz) — Community Edition ile kendi sunucunda çalıştırabilirsin
DevSecOps — SAST, DAST, dependency scanning dahili
Kubernetes entegrasyonu — Auto DevOps ile otomatik deploy
Bitbucket'ın Güçlü Yanları
Atlassian ekosistemi — Jira, Confluence, Trello ile derin entegrasyon
Bitbucket Pipelines — Basit CI/CD
Kurumsal tercih — Zaten Jira kullanan şirketler için doğal seçim
Hangisini Seçmeli?
Açık kaynak proje? → GitHub (topluluk en büyük)
Self-hosted istiyorsun? → GitLab CE (ücretsiz, tam özellikli)
Jira kullanıyorsun? → Bitbucket (doğal entegrasyon)
Startup / küçük ekip? → GitHub veya GitLab (ikisi de cömert)
Enterprise / büyük şirket? → Hepsi seçenek, ekosisteme bağlı
Portföy / kariyer? → GitHub (recruiter'lar buraya bakar)💡 İpucu: Bir geliştirici olarak en azından GitHub'ı bilmelisin. Sektörde fiili standart haline geldi. GitLab ise özellikle DevOps-yoğun ekiplerde çok tercih ediliyor.
GitHub Hesabı ve İlk Repository
Hesap Türleri
GitHub'da üç tür hesap var:
| Tür | Açıklama | Ücret |
|---|---|---|
| Free | Sınırsız public/private repo, 3 collaborator (private) | Ücretsiz |
| Pro | Code review araçları, insights, wiki | $4/ay |
| Team | Organizasyon yönetimi, team review, advanced audit | $4/kullanıcı/ay |
| Enterprise | SAML SSO, advanced security, compliance | $21/kullanıcı/ay |
💡 İpucu: Öğrenciysen GitHub Student Developer Pack ile Pro özellikleri ücretsiz alabilirsin.
.eduuzantılı e-posta adresi yeterli.
Yeni Repository Oluşturma (Web Arayüzü)
GitHub'da yeni bir repo oluşturmak için:
Sağ üst köşedeki + butonuna tıkla → New repository
Ayarları doldur:
Repository name: my-awesome-project
Description: Harika projemin açıklaması
Visibility: ◉ Public ○ Private
Initialize this repository with:
☑ Add a README file
☑ Add .gitignore → Node (template seç)
☑ Choose a license → MIT LicenseCreate repository butonuna bas
Yeni Repository Oluşturma (Terminal)
Eğer projeyi önce yerelde oluşturup sonra GitHub'a göndermek istiyorsan:
# 1. Proje dizinini oluştur ve Git'i başlat
mkdir my-awesome-project
cd my-awesome-project
git init
# 2. İlk dosyaları oluştur
echo "# My Awesome Project" > README.md
echo "node_modules/" > .gitignore
# 3. İlk commit
git add .
git commit -m "Initial commit"
# 4. GitHub'da boş bir repo oluştur (web'den veya CLI ile)
# Sonra remote olarak ekle
git remote add origin git@github.com:username/my-awesome-project.git
# 5. Push et
git push -u origin mainTerminal çıktısı şöyle görünür:
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 8 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 320 bytes | 320.00 KiB/s, done.
Total 4 (delta 0), reused 0 (delta 0)
To github.com:username/my-awesome-project.git
* [new branch] main -> main
Branch 'main' set up to track remote branch 'main' from 'origin'.GitHub CLI ile Repository Oluşturma
GitHub CLI (gh) ile terminal'den hiç web'e gitmeden repo oluşturabilirsin:
# GitHub CLI kurulumu (bir kez yapılır)
# macOS: brew install gh
# Ubuntu: sudo apt install gh
# Windows: winget install GitHub.cli
# Giriş yap
gh auth login
# Yeni repo oluştur (interaktif)
gh repo create my-awesome-project --public --clone
# Veya mevcut dizini GitHub'a yükle
cd existing-project
gh repo create --source=. --public --pushInteraktif modda gh repo create şöyle sorular sorar:
? What would you like to do? Create a new repository on GitHub from scratch
? Repository name: my-awesome-project
? Description: Harika projem
? Visibility: Public
? Would you like to add a README file? Yes
? Would you like to add a .gitignore? Yes
? Choose a .gitignore template: Node
? Would you like to add a license? Yes
? Choose a license: MIT License
? This will create "my-awesome-project" as a public repository on GitHub. Continue? Yes
✓ Created repository username/my-awesome-project on GitHub
✓ Cloned fork💡 İpucu:
ghCLI, GitHub'ın resmi komut satırı aracıdır. PR oluşturma, issue yönetimi, workflow tetikleme gibi birçok işlemi terminal'den yapabilirsin. İlerleyen derslerde sıkça kullanacağız.
Public vs Private Repository
Public Repository
Herkes görebilir ve klonlayabilir
Açık kaynak projeler için ideal
GitHub'ın ücretsiz planında sınırsız
Google gibi arama motorlarında çıkabilir
Portföy için harika
Private Repository
Sadece sen ve davet ettiğin kişiler görebilir
Şirket projeleri, kişisel deneysel çalışmalar için
Ücretsiz planda da sınırsız (eskiden sınırlıydı)
Collaborator ekleme ile ekip çalışması yapılabilir
Ne Zaman Public, Ne Zaman Private?
Public yapmalısın:
✅ Açık kaynak proje
✅ Portföy projesi (iş başvurularında göstermek için)
✅ Eğitim materyali, tutorial
✅ Kütüphane / framework
Private yapmalısın:
🔒 Şirket kodu
🔒 API anahtarları içeren yapılandırmalar
🔒 Müşteri verileri içeren projeler
🔒 Henüz hazır olmayan, deneysel çalışmalar⚠️ Dikkat: Public bir repo'yu private yapabilirsin, private bir repo'yu da public yapabilirsin. Ama bir kez public olan repo fork'lanmış ve klonlanmış olabilir. Geri dönüşü olmayan bir "bell" (çan) gibi — çaldıktan sonra sesi geri alamazsın. Hassas bilgi içeren repo'yu asla public yapma!
README.md — Projenin Vitrini
Neden README Önemli?
Bir projenin GitHub sayfasına girdiğinde ilk gördüğün şey README.md dosyasıdır. Bu dosya projenin vitrini, kartviziti, ilk izlenimidir.
Düşün: bir dükkanın önünden geçiyorsun. Vitrinde hiçbir şey yok, kapıda tabela yok, içerisi karanlık. Girer misin? Muhtemelen hayır. İşte README'siz bir proje de tam böyle görünür.
İyi Bir README Ne İçermeli?
İşte profesyonel bir README'nin anatomisi:
# 🚀 Proje Adı
Kısa ve öz bir açıklama — bu proje ne yapıyor, neden önemli.



## 📋 İçindekiler
- [Özellikler](#özellikler)
- [Kurulum](#kurulum)
- [Kullanım](#kullanım)
- [API Referansı](#api-referansı)
- [Katkı Sağlama](#katkı-sağlama)
- [Lisans](#lisans)
## ✨ Özellikler
- 🔥 Hızlı ve hafif
- 🎨 Özelleştirilebilir temalar
- 📱 Responsive tasarım
- 🔒 Güvenli kimlik doğrulama
## 🛠️ Kurulum
### Gereksinimler
- Node.js >= 18
- npm veya yarn
### Adımlar
\```bash
# Repo'yu klonla
git clone https://github.com/username/project.git
cd project
# Bağımlılıkları yükle
npm install
# Geliştirme sunucusunu başlat
npm run dev
\```
## 📖 Kullanım
\```javascript
import { createApp } from './app';
const app = createApp({
port: 3000,
database: 'mongodb://localhost/mydb'
});
app.start();
\```
## 🤝 Katkı Sağlama
Katkılarınızı bekliyoruz! Lütfen [CONTRIBUTING.md](CONTRIBUTING.md)
dosyasını okuyun.
1. Fork edin
2. Feature branch oluşturun (`git checkout -b feature/amazing-feature`)
3. Commit edin (`git commit -m 'feat: Add amazing feature'`)
4. Push edin (`git push origin feature/amazing-feature`)
5. Pull Request açın
## 📄 Lisans
Bu proje [MIT](LICENSE) lisansı altında dağıtılmaktadır.README İpuçları
İlk paragraf çok önemli — Projenin ne yaptığını 1-2 cümlede anlat
Badge'ler güven verir — Build durumu, test coverage, lisans badge'leri ekle
Kurulum adımları net olsun — Copy-paste ile çalışmalı
Ekran görüntüsü / GIF — Görsel içerik, bin kelimeye bedel
Güncel tut — Eski README, bakımsız proje izlenimi verir
İyi README = Daha fazla yıldız ⭐
= Daha fazla katkıcı 🧑💻
= Daha fazla kullanıcı 👥
= Daha iyi kariyer fırsatları 💼LICENSE — Kodunun Hukuki Kimliği
Neden Lisans Gerekli?
İşte çoğu yeni geliştiricinin bilmediği bir gerçek: lisans dosyası olmayan bir repo'nun kodu hukuki olarak "tüm hakları saklı"dır. Yani lisans koymadığın sürece, kimse kodunu yasal olarak kullanamaz, kopyalayamaz, değiştiremez.
"Ama ben public yaptım, herkes görsün istedim?" — Evet, görebilirler ama yasal olarak kullanamaz, dağıtamaz, ticari projede kullanamazlar. İşte bu yüzden açık kaynak projeler mutlaka bir lisans dosyasına sahip olmalı.
Popüler Lisanslar
┌──────────────────────────────────────────────────────────────┐
│ LISANS SEÇİM REHBERİ │
├──────────────────────────────────────────────────────────────┤
│ │
│ "Herkes istediği gibi kullansın" │
│ ──→ MIT License │
│ En özgür, en basit. Ticari kullanım serbest. │
│ Sadece lisans metnini korusun yeter. │
│ Kullananlar: React, Rails, jQuery, .NET │
│ │
│ "Kullansınlar ama patent koruması da olsun" │
│ ──→ Apache License 2.0 │
│ MIT gibi ama patent hakları da tanımlı. │
│ Büyük şirketler için güvenli. │
│ Kullananlar: Android, Kubernetes, TensorFlow │
│ │
│ "Türev çalışmalar da açık kaynak olsun" │
│ ──→ GPL v3 │
│ Copyleft: değiştirip dağıtırsan, senin kodun da │
│ GPL olmak zorunda. │
│ Kullananlar: Linux kernel, WordPress, GIMP │
│ │
│ "Kütüphane olarak kullansınlar, copyleft bulaşmasın" │
│ ──→ LGPL │
│ GPL'in yumuşak hali. Linkleyebilirsin ama │
│ kütüphanenin kendisindeki değişiklikler açık kalmalı. │
│ │
│ "Sadece eğitim/kişisel kullanım olsun" │
│ ──→ Creative Commons (CC BY-NC) │
│ Kod için değil, dokümantasyon ve içerik için ideal. │
│ │
│ "Lisans umurumda değil, tamamen serbest" │
│ ──→ The Unlicense / WTFPL │
│ Public domain — hiçbir koşul yok. │
│ │
└──────────────────────────────────────────────────────────────┘Pratikte Lisans Seçimi
# GitHub'da repo oluştururken lisans seçebilirsin
# Ya da sonradan ekleyebilirsin:
# Yöntem 1: GitHub web arayüzünden
# Repo → Add file → Create new file → "LICENSE" yaz
# GitHub otomatik olarak lisans template'leri sunar
# Yöntem 2: Terminal'den
# MIT lisansı eklemek için:
cat > LICENSE << 'EOF'
MIT License
Copyright (c) 2025 Your Name
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
EOF
git add LICENSE
git commit -m "Add MIT License"⚠️ Dikkat: Lisansı sonradan değiştirmek, özellikle daha kısıtlayıcı bir lisansa geçmek, zor ve tartışmalı olabilir. Projenin başında doğru lisansı seçmek önemlidir.
Hızlı Karar Tablosu
| Soru | Cevabınız | Önerilen Lisans |
|---|---|---|
| Ticari kullanıma açık olsun mu? | Evet | MIT veya Apache 2.0 |
| Türev çalışmalar da açık kaynak olmalı mı? | Evet | GPL v3 |
| Patent koruması gerekli mi? | Evet | Apache 2.0 |
| Maksimum özgürlük? | Evet | MIT veya Unlicense |
| Kütüphane/framework? | Evet | MIT veya Apache 2.0 |
| Uygulama/platform? | Eğer copyleft istiyorsanız | AGPL v3 |
Repository Yapısı ve Best Practices
Tipik Bir Proje Yapısı
my-project/
├── .github/ # GitHub'a özel dosyalar
│ ├── workflows/ # GitHub Actions workflow'ları
│ │ └── ci.yml
│ ├── ISSUE_TEMPLATE/ # Issue template'leri
│ │ ├── bug_report.md
│ │ └── feature_request.md
│ ├── PULL_REQUEST_TEMPLATE.md
│ └── CODEOWNERS
├── src/ # Kaynak kod
│ ├── index.js
│ └── utils/
├── tests/ # Testler
│ └── index.test.js
├── docs/ # Dokümantasyon
│ └── api.md
├── .gitignore # Git'in takip etmeyeceği dosyalar
├── .editorconfig # Editör ayarları
├── README.md # Projenin vitrini
├── LICENSE # Lisans
├── CONTRIBUTING.md # Katkı sağlama rehberi
├── CHANGELOG.md # Değişiklik günlüğü
├── package.json # (Node.js projesi ise)
└── .env.example # Ortam değişkenleri örneğiÖnemli Dosyalar
| Dosya | Amaç |
|---|---|
README.md | Projenin tanıtımı, kurulum ve kullanım bilgisi |
LICENSE | Hukuki lisans bilgisi |
CONTRIBUTING.md | Katkı sağlamak isteyenler için rehber |
CHANGELOG.md | Sürüm bazında değişiklik listesi |
CODE_OF_CONDUCT.md | Topluluk davranış kuralları |
.gitignore | Git'in görmezden geleceği dosyalar |
CODEOWNERS | Hangi dosyaların kimin sorumluluğunda olduğu |
.editorconfig | Editörler arası tutarlı format ayarları |
.env.example | Ortam değişkenleri şablonu (gerçek .env'yi commit'leme!) |
⚠️ Dikkat:
.envdosyasını asla commit'leme! API anahtarları, şifreler gibi hassas bilgiler içerir..gitignoredosyana.envsatırını ekle. Bunun yerine.env.exampledosyasını paylaş — değerleri boş bırak veya placeholder koy.
GitHub Profil README
GitHub'ın az bilinen ama çok güçlü bir özelliği var: kullanıcı adınla aynı isimde bir repo oluşturduğunda, o repo'nun README'si profil sayfanda görünür!
# Kullanıcı adın "tolgahan" ise:
# "tolgahan" adında bir repo oluştur
# README.md dosyasını düzenle — profil sayfanda görünecek!Profil README Örneği
# Merhaba! 👋 Ben Tolgahan
🎓 Bilgisayar Mühendisliği öğrencisi
💻 Full-stack web geliştirici
🌱 Şu an Rust ve sistem programlama öğreniyorum
📫 Bana ulaşın: tolgahan@email.com
## 🔧 Teknolojiler




## 📊 GitHub İstatistiklerim
GitHub'ın Temel Bileşenleri — Büyük Resim
Daha sonraki derslerde derinlemesine göreceğimiz ama şimdiden bilmen gereken GitHub bileşenleri:
┌─────────────────────────────────────────────────────────┐
│ GITHUB │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Repositories │ │ Pull Request │ │ Issues │ │
│ │ (Depolar) │ │ (PR/İstek) │ │ (Sorun/Görev)│ │
│ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │
│ │ │ │ │
│ ┌──────┴───────┐ ┌──────┴───────┐ ┌──────┴───────┐ │
│ │ Actions │ │ Projects │ │ Discussions │ │
│ │ (CI/CD) │ │ (Kanban) │ │ (Tartışmalar)│ │
│ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │
│ │ │ │ │
│ ┌──────┴───────┐ ┌──────┴───────┐ ┌──────┴───────┐ │
│ │ Packages │ │ Pages │ │ Security │ │
│ │ (Paketler) │ │ (Web Site) │ │ (Güvenlik) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
└─────────────────────────────────────────────────────────┘Her bir bileşen ilerleyen derslerde detaylı olarak işlenecek. Şimdilik büyük resmi gördüğüne emin ol.
Repository Ayarları
Bir repository oluşturduktan sonra ayarlar sekmesinden birçok önemli yapılandırma yapabilirsin:
Genel Ayarlar (Settings → General)
Repository name: Değiştirilebilir (eski URL redirect olur)
Description: Kısa açıklama (arama sonuçlarında görünür)
Website: Projenin web sitesi URL'si
Topics: Etiketler (javascript, react, api vb.)
→ Keşfedilebilirliği artırır!Tehlikeli Bölge (Danger Zone)
Change visibility: Public ↔ Private geçiş
Transfer ownership: Repo'yu başka kullanıcıya/organizasyona transfer et
Archive repository: Salt okunur yap (development bitti)
Delete repository: Kalıcı silme (geri dönüşü yok!)Branch Protection (Kısaca)
Settings → Branches → Branch protection rules:
☑ Require pull request before merging
☑ Require approvals (min 1 review)
☑ Require status checks to pass before merging
☑ Require branches to be up to date
☑ Do not allow bypassing the above settingsBu ayarları Code Review ve CI/CD derslerinde detaylı göreceğiz.
Yaygın Hatalar ve Çözümleri
1. Yanlışlıkla Hassas Bilgi Push'lama
# ❌ YANLIŞ — .env dosyasını commit'ledin!
git add .
git commit -m "Add config"
git push
# Bu noktada API anahtarın GitHub'da herkesin göreceği şekilde duruyor!
# ✅ ÇÖZÜM — Geçmişten temizle
# (İleri derslerde git filter-repo ile detaylı göreceğiz)
# Şimdilik en güvenli yol: anahtarı iptal et, yenisini oluştur
# Ve .gitignore'a ekle:
echo ".env" >> .gitignore2. main vs master Karışıklığı
# Eski Git sürümleri varsayılan branch'i "master" olarak oluşturur
# GitHub ise 2020'den beri "main" kullanır
# Varsayılan branch adını değiştir:
git config --global init.defaultBranch main
# Mevcut repo'da branch adını değiştir:
git branch -m master main
git push -u origin main3. Fork ile Clone Karışıklığı
# Clone: Repo'nun bir kopyasını indirirsin, push yetkisi repo'nun
# sahibinin sana verdiği izne bağlıdır
# Fork: GitHub üzerinde repo'nun SENIN hesabına bir kopyasını oluşturur
# Bu kopya tamamen senin — istediğin gibi push edersin
# Sonra orijinal repo'ya Pull Request açarsın
# Fork → Clone → Branch → Commit → Push → PR
# Bu, açık kaynak katkı workflow'unun temelidirPratik: GitHub'da İlk Projen
Şimdi öğrendiklerini pratiğe dökelim:
# 1. Yerelde proje oluştur
mkdir my-first-github-project
cd my-first-github-project
git init
# 2. README oluştur
cat > README.md << 'EOF'
# 🎯 My First GitHub Project
Bu proje Git & GitHub kursundaki ilk GitHub projemdir.
## Ne Öğrendim?
- GitHub'da repository oluşturmayı
- README.md yazmayı
- LICENSE seçmeyi
- .gitignore kullanmayı
## Kurulum
```bash
git clone https://github.com/KULLANICI_ADI/my-first-github-project.gitLisans
MIT License EOF
3. .gitignore oluştur
cat > .gitignore << 'EOF' # Dependencies node_modules/
Environment
.env .env.local
IDE
.vscode/ .idea/
OS
.DS_Store Thumbs.db
Build
dist/ build/ EOF
4. Basit bir kaynak dosya
cat > index.js << 'EOF' // İlk GitHub projem! console.log("Merhaba GitHub! 🚀"); EOF
5. Commit ve push
git add . git commit -m "Initial commit: README, .gitignore, and first code"
6. GitHub'da repo oluştur ve push et
gh repo create my-first-github-project --public --source=. --push
---
## Özet
Bu derste GitHub dünyasına ilk adımı attık. İşte öğrendiklerimiz:
- **GitHub**, Git repository'lerini barındıran ve işbirliğini kolaylaştıran bir platformdur — Git'in kendisi değil, Git'in üzerine kurulu bir ekosistemdir
- **GitHub vs GitLab vs Bitbucket** karşılaştırmasında GitHub topluluk büyüklüğüyle öne çıkarken, GitLab dahili DevOps özellikleriyle, Bitbucket ise Atlassian entegrasyonuyla parlar
- **Public repo'lar** herkesin görebildiği, **private repo'lar** sadece davet edilenlerin erişebildiği depolardır
- **README.md** projenin vitrinidir — ilk izlenim burada oluşur, iyi bir README proje, kurulum bilgisi ve kullanım örnekleri içermelidir
- **LICENSE** dosyası kodunun hukuki kimliğidir — lisanssız kod "tüm hakları saklı" demektir, açık kaynak için mutlaka lisans ekle
- **Repository yapısı** düzenli olmalı — `.gitignore`, `CONTRIBUTING.md`, `CHANGELOG.md` gibi standart dosyalar profesyonellik göstergesidir
- **GitHub CLI** (`gh`) ile terminal'den ayrılmadan repo oluşturabilir, yönetebilirsin
Bir sonraki derste GitHub'ın en güçlü işbirliği aracını göreceğiz: **Pull Request** (PR).
AI Asistan
Sorularını yanıtlamaya hazır