GitHub Nedir? Nasıl Kullanılır ve Nelere Yarar?

Yaklaşık 3 dakikalık okuma

Bir betiğin “çalışan son hâlini” bulmak için yedek_son_v2_gercekson.ps1 gibi dosya adlarıyla uğraştıysanız, sürüm kontrolüne ihtiyacınız var demektir. Bu yazıda yazılımcıların ve sistem yöneticilerinin vazgeçilmezi olan Git ve GitHub‘ı, temel kavramlarından günlük kullanımına kadar anlatıyorum.

Git ve GitHub Aynı Şey mi?

Değil, ve bu ayrım önemlidir:

  • Git: Bilgisayarınızda çalışan, dosyalarınızdaki her değişikliği kaydeden açık kaynaklı bir sürüm kontrol sistemidir. İnternet bağlantısı olmadan da çalışır.
  • GitHub: Git depolarınızı internette barındıran, ekip çalışması için ek özellikler sunan bir platformdur. Microsoft’a aittir. Benzer alternatifler arasında GitLab, Bitbucket ve kendi sunucunuza kurabileceğiniz Gitea bulunur.

Kısacası Git aracın kendisi, GitHub ise o aracın bulut tabanlı buluşma noktasıdır.

Temel Kavramlar

KavramAnlamı
Repository (repo, depo)Projenizin tüm dosyalarını ve değişiklik geçmişini tutan klasör
CommitBelirli bir andaki değişikliklerin açıklamalı kaydı, bir “kayıt noktası”
Branch (dal)Ana koddan bağımsız çalışabileceğiniz paralel bir kopya
MergeBir daldaki değişiklikleri başka bir dala birleştirmek
CloneUzaktaki bir depoyu bilgisayarınıza kopyalamak
Push / PullDeğişiklikleri GitHub’a göndermek / GitHub’dan almak
Pull Request (PR)Bir daldaki değişikliklerin incelenip ana dala alınması için açılan istek
ForkBaşkasının deposunun kendi hesabınıza kopyası

Public ve Private Depo

GitHub’da depolar iki türlüdür:

  • Public (açık): Herkes görebilir. Açık kaynak projeler için uygundur.
  • Private (özel): Yalnızca sizin ve davet ettiğiniz kişilerin görebildiği depolardır. Ücretsiz hesapta da sınırsız sayıda private depo açabilirsiniz.

Şirket betikleri, müşteri projeleri ve yapılandırma dosyaları için her zaman private depo kullanın.

Kurulum ve İlk Ayarlar

1. Git Kurulumu

# Ubuntu / Debian
sudo apt install git

# Windows (winget ile)
winget install --id Git.Git -e

2. Kimlik Bilgileri

Commit’lerde görünecek adınızı ve e-postanızı tanımlayın:

git config --global user.name "Bayram Can Taşkın"
git config --global user.email "[email protected]"
git config --global init.defaultBranch main

3. GitHub’a SSH ile Bağlanma

GitHub, komut satırında hesap parolasıyla girişi kabul etmez. En pratik yöntem SSH anahtarıdır. Anahtar oluşturmayı SSH Anahtar ile Şifresiz Giriş yazısında anlatmıştım. Açık anahtarınızı (id_ed25519.pub içeriği) GitHub’da Settings › SSH and GPG keys › New SSH key bölümüne ekleyin ve bağlantıyı test edin:

ssh -T [email protected]

“Hi kullaniciadi! You’ve successfully authenticated” mesajını görmelisiniz.

Alternatif olarak GitHub’ın resmi komut satırı aracı GitHub CLI ile tarayıcı üzerinden oturum açabilirsiniz:

gh auth login

Günlük Kullanım: Adım Adım

Yeni Bir Proje Başlatmak

mkdir betiklerim && cd betiklerim
git init
echo "# Betiklerim" > README.md
git add .
git commit -m "İlk commit"

GitHub’da boş bir depo oluşturduktan sonra yerel depoyu ona bağlayıp gönderin:

git remote add origin [email protected]:kullaniciadi/betiklerim.git
git push -u origin main

GitHub CLI kullanıyorsanız depo oluşturma ve gönderme işini tek komutla yapabilirsiniz:

gh repo create betiklerim --private --source=. --push

Değişiklik Yapmak

git status
git add yedekle.sh
git commit -m "Yedekleme betiğine log ekle"
git push

İyi bir commit mesajı ne yapıldığını kısa ve açık şekilde anlatır. “düzeltme” yerine “Disk doluluk kontrolünde yüzde hesabını düzelt” gibi bir mesaj, aylar sonra size çok zaman kazandırır.

Dal ile Çalışmak

Canlıdaki kodu bozmadan yeni bir özellik denemek için ayrı bir dal açın:

git switch -c yeni-ozellik
# ...değişiklikleri yap, commit et...
git push -u origin yeni-ozellik

Ardından GitHub’da bu dal için bir Pull Request açın; değişiklikleri inceleyip onayladıktan sonra main dalına birleştirin.

Geçmişe Bakmak

git log --oneline
git diff

.gitignore: Depoya Girmemesi Gerekenler

Parolalar, API anahtarları ve geçici dosyalar asla depoya gönderilmemelidir. Proje kök dizininde .gitignore dosyası oluşturun:

.env
*.log
node_modules/
__pycache__/
.DS_Store

Önemli: Yanlışlıkla bir parolayı commit edip GitHub’a gönderdiyseniz, sonraki commit’te silmek yeterli değildir; geçmişte kalmaya devam eder. O parolayı veya anahtarı hemen geçersiz kılın ve yenisini oluşturun.

GitHub ile Neler Yapılabilir?

  • Kod ve betik arşivi: PowerShell, Bash ve Ansible betiklerinizin her sürümünü saklamak.
  • Ekip çalışması: Birden fazla kişinin aynı projede çakışmadan çalışması.
  • Issues: Hata kayıtları ve yapılacaklar listesi tutmak.
  • GitHub Actions: Her push’ta testleri çalıştırmak, uygulamayı derlemek veya sunucuya deploy etmek (CI/CD).
  • GitHub Pages: Statik web sitelerini ücretsiz yayınlamak.
  • Yapılandırma yönetimi: Sunucu ayar dosyalarını sürüm kontrolüyle takip etmek.
  • Yapay zeka entegrasyonu: Claude gibi yapay zeka asistanlarıyla kod yazdırıp değişiklikleri doğrudan depoya göndermek.

Sonuç

Git ve GitHub ilk bakışta karmaşık görünse de günlük kullanımda add, commit, push ve pull komutları işlerin büyük kısmını görür. Tek bir betikle başlayıp alışkanlık hâline getirmenizi öneririm. Serinin son yazısında Claude AI, GitHub ve Coolify‘ı bir araya getirerek otomatik yayına alınan bir proje kuracağız.