GitHub, Microsoft'a ait olan, Git deposu barındırma, ortak geliştirme ve süreç otomasyonu için en büyük web platformudur. Yalnızca sürüm kontrollü kod depolama değil, aynı zamanda eksiksiz bir proje yönetimi araçları seti sağlar: Issue Tracking, kod incelemeli Pull Request, CI/CD için Actions ve dokümantasyon için Wiki. GitHub, 2024'e göre, platformda 100 milyondan fazla geliştirici ve 420 milyon depo bulunmaktadır.
Önemli Noktalar
GitHub, Git depolarında depolama ve işbirliği için bir web hizmetidir; 2008 yılında Tom Preston-Werner, Chris Wanstrath ve PJ Hyett tarafından kurulmuştur. 2018'de şirket, Microsoft tarafından 7,5 milyar dolara satın alınmıştır. Platform, tüm Git işlemleri için bir web arayüzü sağlar ve üzerine fork, yıldız, abonelik, kod incelemesi ve yerleşik bir sürekli entegrasyon sistemi gibi sosyal özellikler ekler.
GitHub ile rakipleri arasındaki temel fark, açık ekosistemi ve en büyük geliştirici topluluğudur. GitHub, Android, Kubernetes, React, Swift, Kotlin ve binlerce diğer açık kaynak projenin kaynak kodunu barındırır. Bu, platformu yalnızca bir kod depolama aracı değil, aynı zamanda geliştiriciler için bir sosyal ağ haline getirir: projeleri takip edebilir, değişiklikleri tartışabilir ve pull request'ler aracılığıyla katkıda bulunabilirsiniz.
Bir Microsoft raporuna (2024) göre, her gün 10 milyondan fazla yeni Pull Request GitHub üzerinden geçmekte ve aylık aktif kullanıcı sayısı 100 milyonu aşmıştır. Platform, 500'den fazla programlama dilini, dosya uzantısına göre otomatik dil algılamayı ve kod sözdizimi vurgulamayı destekler.
GitHub'ın işlevselliği basit Git barındırmanın çok ötesine geçer. Platform şunları sağlar: GitHub Actions — yerleşik bir CI/CD sistemi; GitHub Packages — paketler ve konteynerler için bir kayıt defteri; GitHub Codespaces — VS Code tabanlı bulut geliştirme ortamları; GitHub Discussions — topluluk için bir forum; GitHub Security — otomatik bağımlılık güncellemeleri ve güvenlik açığı taraması için Dependabot; GitHub Copilot — kod yazmak için bir AI asistanı.
Kuruluşlar için GitHub, GitHub Enterprise sunar — kendi barındırmalı (GitHub Enterprise Server) veya bulut dağıtımlı (GitHub Enterprise Cloud) bir kurumsal sürüm. Kurumsal özellikler arasında SAML/SSO kimlik doğrulaması, denetim günlüğü, depo güvenlik politikaları ve %99,95 kullanılabilirlik SLA'sı bulunur. Enterprise sürümü Google, Apple ve Airbnb gibi şirketler tarafından kullanılmaktadır.
GitHub'ın önemli bir özelliği, web arayüzünü kullanmadan komut satırından tüm platform işlemlerini gerçekleştirmenizi sağlayan GitHub CLI'dır (gh). gh ile depolar oluşturabilir, Issues'leri yönetebilir, Pull Request'leri inceleyebilir ve Actions'ları doğrudan terminalden çalıştırabilirsiniz, bu da komut satırına alışkın geliştiricilerin işini hızlandırır.
| Özellik | Amaç | Kullanılabilirlik |
|---|---|---|
| Actions | CI/CD ve otomasyon | Ücretsiz 2000 dk/ay |
| Codespaces | VS Code tabanlı bulut IDE | Ücretli, 60 saat/ay ücretsiz |
| Packages | Paket ve Docker imajı barındırma | Ücretsiz 500 MB |
| Dependabot | Otomatik bağımlılık güncellemeleri | Herkese açık depolar için ücretsiz |
| Pages | Statik site barındırma | Ücretsiz |
Pull Request (PR), GitHub'da bir projede değişiklik yapmanın ana mekanizmasıdır. Bir geliştirici, değişikliklerle bir dal oluşturur, bunu GitHub'da yayınlar ve ana dala bir birleştirme isteği (Pull Request) gönderir. Projenin diğer katılımcıları dallar arasındaki farkı (diff) görür, belirli kod satırlarında yorum bırakabilir, değişiklik önerebilir ve isteği onaylayabilir veya reddedebilir.
GitHub'daki kod inceleme süreci PR'lar etrafında inşa edilmiştir. Her yorum, diff'teki belirli bir satıra eklenir ve üç türde olabilir: Comment (normal yorum), Request Changes (düzeltme gerektirir) ve Approve (onay). Değişiklikler yapıldıktan sonra, yazar yeni bir commit ile PR'ı günceller ve inceleme süreci tekrarlanır. Tüm itirazlar çözüldüğünde ve PR onaylandığında, değişiklikler hedef dala birleştirilir.
# Özellik dalı oluşturma ve push etme
git checkout -b fix-login-bug
git add src/
git commit -m "Fix login validation error"
git push -u origin fix-login-bug
# CLI ile PR oluşturma
gh pr create --base main --title "Fix login validation" \
--body "Fixed edge case with empty email field"
# PR'ı görüntüleme ve birleştirme
gh pr review --approve fix-login-bug
gh pr merge --squash fix-login-bug
GitHub, dal koruma kurallarını destekler: main'e doğrudan push'ları engelleyebilir, birleştirmeden önce zorunlu onay sayısı isteyebilir, Actions kontrolleri çalıştırabilir ve birleştirmeden önce dalın güncel olmasını isteyebilirsiniz. Dal koruması, Settings → Branches altında yapılandırılır ve üretim projeleri için zorunlu bir uygulamadır ve ana dala kararsız kodun yanlışlıkla eklenmesini önler.
GitHub Actions, depo içinde doğrudan iş akışlarını otomatikleştirmenizi sağlayan yerleşik bir CI/CD platformudur. İş akışları, .github/workflows/ dizininde bulunan YAML dosyalarında tanımlanır. Her iş akışı, runner'lar — Linux, Windows veya macOS ile sanal makineler — üzerinde çalışan bir veya daha fazla işten oluşur.
Actions, olay odaklı bir modeli destekler: iş akışları, push, PR oluşturma, sürüm yayınlama, programa göre veya webhook aracılığıyla tetiklenir. Bu, geliştirici müdahalesi olmadan derleme, test çalıştırma, statik kod analizi, uygulama mağazalarında yayınlama ve sunucuya dağıtımı otomatikleştirmenizi sağlar. Aşağıda bir Android projesi için örnek bir iş akışı verilmiştir:
name: Android CI
on:
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
- name: Build with Gradle
run: ./gradlew assembleDebug
Actions ekosistemi, GitHub Marketplace'te 20.000'den fazla hazır eylem içerir. Popüler eylemler: checkout (depoyu klonlama), setup-java/setup-node/setup-python (ortam kurulumu), upload-artifact (derleme yapıtlarını kaydetme), cache (hız için bağımlılık önbelleğe alma), slack-notify (Slack'e bildirim gönderme). Actions ayrıca matris derlemelerini de destekler — birden çok işletim sistemi veya dil sürümünde eşzamanlı yürütme.
Issues, GitHub'da yerleşik bir görev takip sistemidir. Her Issue'nun bir başlığı, açıklaması, etiketleri, atananları, kilometre taşları ve bağlantılı Pull Request'leri vardır. Issues'ler şablonlanabilir — hata raporları, özellik talepleri veya sorular için farklı şablonlar kullanılır ve oluşturma sırasında otomatik olarak eklenir.
GitHub Projects (önceden Projects Beta), Jira ve Trello'ya benzer, panolara dayalı bir proje yönetimi aracıdır. Projects, özel alanları (durum, öncelik, sprint), Issues ve Pull Request'lerle bağlantıyı, görev durumu değiştiğinde kart hareketinin otomasyonunu ve yanma grafiği (burndown chart) şeklinde analitiği destekler. Projects iki modda kullanılabilir: Table (tablo görünümü) ve Board (kanban panosu).
Sürüm yönetimi için GitHub, Milestones (kilometre taşları) sağlar — bir son tarihle ortak bir hedef etrafında birleşmiş Issue ve PR grupları. Her kilometre taşı ilerlemeyi gösterir: kaç görevin açık olduğu, kaçının kapalı olduğu ve son teslim tarihine uyulup uyulmadığı. Kilometre taşları, Releases ile entegre olur — bir sürüm yayınlarken, onu bir kilometre taşına bağlayabilir ve kapalı Issues'lere dayalı olarak otomatik olarak bir CHANGELOG oluşturabilirsiniz.
GitHub Pages, depo içeriğini https://username.github.io/repository adresinde otomatik olarak yayınlayan, statik siteler için ücretsiz barındırmadır. Pages, HTML, CSS, JavaScript ve statik oluşturucuları destekler: Jekyll (yerleşik), Hugo, Next.js (dışa aktarma) ve MkDocs. Yapılandırma, yayınlama için dal ve dizin seçiminin yanı sıra özel alan adı desteğini içerir.
Teknik dokümantasyon için GitHub, Wiki sağlar — aynı zamanda bir Git deposu olarak depolanan yerleşik bir wiki sistemi. Wiki, Markdown'ı destekler ve sayfaların hem web arayüzü üzerinden hem de yerel olarak wiki deposuna push yoluyla düzenlenmesine olanak tanır. Her Wiki sayfasının kendi değişiklik geçmişi vardır; bu, API, mimari ve proje süreçlerini belgelemek için kullanışlıdır.
GitHub Pages + Jekyll kombinasyonu, dokümantasyon siteleri için popüler bir çözümdür. Jekyll, Markdown dosyalarını otomatik olarak statik HTML sayfalarına dönüştürür, temaları, gezinmeyi ve aramayı destekler. Örneğin, Android Developers belgeleri daha önce GitHub Pages'de Jekyll kullanıyordu ve şimdi dahili bir platform kullanıyor, ancak binlerce açık kaynak proje, siteleri için bu kombinasyonu kullanmaya devam ediyor.
GitHub CLI (gh), komut satırı aracılığıyla tüm platform işlemlerini gerçekleştirmenizi sağlar: depolar oluşturma, Issues'leri yönetme, Pull Request'leri görüntüleme ve onaylama, Actions'ları çalıştırma. gh repo create my-project --public komutu, uzak bir depo oluşturur ve onu yerel olana bağlarken, gh pr create mevcut daldan bir Pull Request oluşturur. CLI, web arayüzü yerine terminali tercih eden geliştiricilerin işini hızlandırır.
GitHub REST API ve GraphQL API, platformun tüm özelliklerine programlı erişim sağlar: Issue oluşturma, kullanıcı yönetimi, istatistik alma ve Actions yönetimi. GraphQL API, karmaşık sorgular için tercih edilir çünkü tek bir istekte yalnızca gerekli alanları almayı sağlar. REST API için hız sınırı, kimliği doğrulanmış kullanıcılar için saatte 5000 istektir. API, GitHub'ı harici CI sistemleri ve dahili DevOps araçlarıyla entegre etmek için yaygın olarak kullanılır.
GitHub Gist, tam bir depo oluşturmadan kod parçacıkları yayınlamak için bir hizmettir. Gist, sözdizimi vurgulama, harici sitelere gömme ve sürüm geçmişini destekler. Her Gist, herkese açık (aramada görünür) veya gizli (yalnızca bağlantı yoluyla erişilebilir) olabilir. Gist, ekip yazışmalarında yapılandırmaları, günlükleri ve kod örneklerini hızlı bir şekilde paylaşmak ve ayrıca geliştiriciler için Pastebin alternatifi olarak kullanılır.
Sıkça Sorulan Sorular
GitHub, açık topluluk ve sosyal özelliklere (fork, yıldız) odaklanır. GitLab, daha güçlü yerleşik CI/CD ve Actions dakikalarında sınırlama olmaksızın kendi kendine yönetilen barındırma sunar.
GitHub Team, kullanıcı başına aylık 4 dolardır ve sınırsız özel depo, dal koruması ve Actions (3000 dakika) sağlar. Ücretsiz plan, küçük açık kaynak projeleri için uygundur.
Depo oluştururken, Public yerine Private'ı seçin. Özel depolarda, kod yalnızca davet edilen işbirlikçilere görünür. Ücretsiz planda, özel depolar en fazla 3 işbirlikçi sınırıyla kullanılabilir.
GitHub Copilot, OpenAI Codex tabanlı, gerçek zamanlı kod otomatik tamamlama sağlayan bir AI asistanıdır. VS Code, JetBrains ve Neovim'de çalışır, tüm popüler programlama dillerini destekler.
Settings → Danger Zone → Delete this repository'ye gidin. Silme işlemi geri alınamaz — tüm commit'ler, Issue'ler ve Wiki, kurtarma olasılığı olmadan silinir. Önceden yedek aldığınızdan emin olun.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.
Ayrıca okuyun