Karşılaştırma

Git ve GitHub: farkları nedir ve nasıl birlikte çalışırlar?

Güncellendi: · Skillaria.Top

Git, bilgisayarınızda çalışan ve projenin değişiklik geçmişini saklayan bir versiyon kontrol programıdır. GitHub ise Git repository'lerinin barındırıldığı bir bulut hizmetidir; üstüne ekip çalışması araçları ekler: pull request, kod incelemesi, issue'lar, CI. Git'i GitHub olmadan kullanabilirsiniz, ama GitHub'ı Git olmadan kullanamazsınız.

Git ve GitHub sürekli karıştırılır, oysa farklı seviyelerdeki şeylerdir. Git, bilgisayarınıza kurduğunuz bir versiyon kontrol programıdır: projenin kaydedilen her durumunu hatırlar ve ona geri dönmenizi sağlar. GitHub ise Git repository'lerinin kopyalarının saklandığı ve etrafında ekip çalışması araçları kurulan bir web hizmetidir. En kolay şöyle hatırlanır: Git motordur, GitHub ise bu motoru koyabileceğiniz servisli bir garaj.

Git nedir?

Git, dağıtık bir versiyon kontrol sistemidir. 2005 yılında Linus Torvalds tarafından Linux çekirdeğinin geliştirilmesi için yazıldı ve o zamandan beri sektör standardı oldu. Git tamamen yerel çalışır: değişiklik geçmişi projenin içindeki gizli .git klasöründe tutulur ve işlemlerin çoğu için internete gerek yoktur.

Buradaki anahtar kelime «dağıtık». Projedeki her katılımcının bilgisayarında yalnızca son dosyalar değil, tüm geçmişiyle birlikte repository'nin eksiksiz bir kopyası bulunur. Sunucu ortadan kalksa bile proje herhangi bir çalışma makinesinden geri yüklenebilir.

Git'in tek başına yapabildikleri:

  • değişiklikleri commit'lerle kaydetmek — yazar, tarih ve açıklama içeren proje anlık görüntüleri;
  • belirli bir satırı kimin, ne zaman ve neden değiştirdiğini göstermek (git log, git blame);
  • branch'lerde paralel geliştirme hatları yürütmek ve bunları birleştirmek;
  • geri kalan işi kaybetmeden hataları geri almak;
  • diğer repository'lerle git push, git pull ve git fetch üzerinden geçmiş alışverişi yapmak.

Git bir komut satırı aracıdır. Grafik istemciler ve editörlere gömülü paneller (VS Code, IntelliJ IDEA) aynı komutların üzerine kurulmuş arayüzlerden ibarettir.

GitHub nedir ve ne işe yarar?

GitHub, Git repository'leri için bir bulut barındırma platformudur ve şu anda Microsoft'a aittir. Orada bir repository oluşturur, yerel kodunuzu git push komutuyla gönderirsiniz; böylece kod iş arkadaşlarınıza, işvereninize ya da repository herkese açıksa tüm internete erişilebilir olur.

Ama GitHub'ın değeri yalnızca depolamada değil. GitHub, repository'nin etrafına Git'te olmayan şeyler ekler:

  • Pull request — tartışma ve satır satır kod incelemesi içeren bir branch birleştirme isteği;
  • Issues — projeye bağlı görevler ve hata raporları;
  • GitHub Actions — CI/CD: her push'ta testlerin, derlemenin ve deploy'un otomatik çalıştırılması;
  • erişim yönetimi — kimin okuyabileceği, yazabileceği, korumalı branch'lere merge edebileceği;
  • geliştirici profili — işe alım uzmanlarının baktığı aktivite grafiği ve herkese açık projeler;
  • GitHub Pages — doğrudan repository'den ücretsiz statik site barındırma.

«git hub» veya «github com» gibi aramalar genellikle tam olarak bu hizmeti kasteder; adresi github.com'dur. Git'in kendi resmi sitesi ise git-scm.com'dur, kurulum dosyası oradan indirilir.

Git ve GitHub karşılaştırma tablosu

KriterGitGitHub
NedirVersiyon kontrol programıRepository barındırma web hizmeti
Nerede çalışırSizin bilgisayarınızdaBulutta, tarayıcı ve API üzerinden
İnternet gerekir miHayır, uzak repository'lerle alışveriş hariçEvet
LisansAçık kaynak (GPLv2), ücretsizKapalı kaynak hizmet; ücretsiz ve ücretli planlar var
ArayüzKomut satırı, GUI istemcileriWeb sitesi, GitHub Desktop uygulaması, gh CLI
Ana göreviSürüm geçmişi, branch'ler, merge'lerEkip çalışması, inceleme, CI, kod yayınlama
Diğeri olmadan kullanılır mıEvet, tamamenHayır, GitHub Git üzerine kuruludur

Git ve GitHub birlikte nasıl çalışır?

Aralarındaki bağlantı remote, yani uzak repository'dir. Yerel repository, GitHub'daki repository'nin adresini kısa bir adla saklar; varsayılan ad origin'dir. Bundan sonra alışveriş üç komutla yapılır:

  • git push — yeni commit'lerinizi sunucuya göndermek;
  • git fetch — başkalarının commit'lerini indirmek, ama dosyalarınıza dokunmamak;
  • git pull — değişiklikleri indirip hemen mevcut branch'e almak (özünde fetch + merge veya rebase).

Önemli: siz göndermediğiniz sürece GitHub kodunuzu görmez. Commit, ilk git push'a kadar yalnızca yerelde var olur. Yeni başlayanların sık yaptığı «commit ettim ama GitHub'da hiçbir şey yok» hatası buradan gelir.

Tipik yol: yerel projeden GitHub'a

# 1. Repository'yi yerelde oluşturuyoruz
cd my-project
git init
git add .
git commit -m "İlk commit"

# 2. github.com'da boş bir repository oluşturuyoruz (README olmadan),
#    adresini kopyalayıp remote olarak bağlıyoruz
git remote add origin git@github.com:username/my-project.git

# 3. Branch'i main olarak yeniden adlandırıp gönderiyoruz
git branch -M main
git push -u origin main

-u bayrağı (uzun hali --set-upstream) yerel main branch'ini uzaktaki ile ilişkilendirir. Bundan sonra argümansız git push ve git pull yazmak yeterlidir.

Ters yol: GitHub'daki bir repository ile başlamak

Proje zaten GitHub'daysa yeniden oluşturulmaz, clone'lanır:

git clone https://github.com/username/my-project.git
cd my-project

Komut tüm geçmişi indirir ve origin remote'unu otomatik olarak ayarlar.

Kimlik doğrulama: SSH mi HTTPS mi?

GitHub, 2021'den beri Git üzerinden HTTPS ile çalışırken hesap şifresini kabul etmiyor. İki çalışan seçenek var.

HTTPS + Personal Access Token. Token hesap ayarlarında (Settings → Developer settings) oluşturulur ve şifre yerine girilir. Her seferinde girmemek için Git bir kimlik bilgisi yöneticisi kullanır; Windows'ta bu, Git for Windows ile birlikte kurulur.

SSH anahtarları. İşverenlerin kendi başınıza kurabilmenizi beklediği seçenek:

# Anahtarı oluşturuyoruz
ssh-keygen -t ed25519 -C "you@example.com"

# Açık kısmı yazdırıp GitHub'a ekliyoruz:
# Settings → SSH and GPG keys → New SSH key
cat ~/.ssh/id_ed25519.pub

# Bağlantıyı test ediyoruz
ssh -T git@github.com

Başarılı olursa GitHub, kullanıcı adınızla bir selamlama ve shell erişimi sağlanmadığına dair bir açıklama döndürür; bu normaldir. Repository adresini bu durumda https:// değil, git@github.com:user/repo.git biçiminde kullanmanız gerekir.

Repository zaten HTTPS ile bağlıysa tek komutla SSH'ye geçebilirsiniz:

git remote set-url origin git@github.com:username/my-project.git

GitHub, GitLab ve diğerleri: fark nedir?

GitHub, Git için tek barındırma hizmeti değil. Hepsi aynı Git ile çalışır, bu yüzden bir repository geçmiş kaybı olmadan birinden diğerine taşınabilir. Farkları, kodun etrafındaki araç setindedir.

HizmetÖzelliklerNe zaman seçilir
GitHubEn büyük açık kaynak topluluğu, GitHub Actions, CopilotPortfolyo, açık projeler, startup'ların çoğu
GitLabKutudan çıktığı gibi entegre CI/CD, kendi sunucunuza kurulabilir (self-hosted)Kodu kendi altyapısında tutmak isteyen şirketler
BitbucketJira ve Atlassian ürünleriyle entegrasyonAtlassian ekosisteminde çalışan ekipler
Gitea, ForgejoHafif, açık kaynaklı self-hosted çözümlerKüçük ekipler, ev sunucuları

GitLab'da birleştirme isteğine merge request, GitHub'da pull request denir, ama özü aynıdır: bir branch'teki değişiklikleri önermek ve merge'den önce tartışmak. Terminoloji farklı, Git komutları aynı.

Tek bir yerel repository'de aynı anda birden fazla remote tutabilirsiniz; örneğin projeyi hem GitHub'a hem GitLab'a yansıtmak için:

git remote add gitlab git@gitlab.com:username/my-project.git
git push gitlab main
git remote -v

Tek başıma çalışıyorsam GitHub'a ihtiyacım var mı?

Teknik olarak hayır: Git yerelde gayet iyi çalışır. Ama tek kişilik bir projede bile uzak repository'nin üç önemli artısı vardır.

  • Yedekleme. Laptop bozulursa kod ve tüm geçmiş sunucuda güvende kalır.
  • Birden fazla cihazdan çalışma. Evde ve ofiste push ve pull ile senkronize olursunuz.
  • Portfolyo. Junior pozisyonlarına alımda GitHub profili çoğu zaman özgeçmişten önce incelenir: canlı projeler, anlamlı commit mesajları, README var mı?

Yeni başlayanlar nereden başlamalı?

Git ve GitHub'ı aynı anda öğrenmeniz gerekmez; sıra önemlidir. Önce yerel döngüyü öğrenin: git init, git status, git add, git commit, git log, branch'ler ve merge. Bunlar ipucusuz çalıştığında GitHub'a kaydolun, SSH'yi kurun ve push, pull, fetch öğrenin. Son adım ekip süreci: fork, göreve özel branch, pull request, inceleme.

İşveren GitHub profilinizde neye bakar?

Yeşil aktivite kareleri asıl mesele değildir. Deneyimli bir inceleyici birkaç dakikada başka şeyleri değerlendirir:

  • «fix», «123», «düzeltmeler» yerine anlaşılır commit mesajları;
  • tek dev bir «projeyi yükledim» yerine küçük ve mantıklı commit'ler;
  • projenin nasıl çalıştırılacağını anlatan bir README;
  • .gitignore dosyası: repository'de node_modules, şifreli .env ve IDE dosyaları yok;
  • eğitim projelerinde bile branch'ler ve pull request'ler — bu, ekip sürecini bildiğinizi gösterir.

Yeni başlayanların sık yaptığı hatalar

«fatal: not a git repository»

Git komutunu bir repository dışında çalıştırıyorsunuz. Proje klasörüne geçin ya da git init çalıştırın. GitHub kaydının bununla ilgisi yok; bu yerel bir Git hatasıdır.

«Permission denied (publickey)»

SSH anahtarı oluşturulmamış, GitHub'a eklenmemiş ya da ssh-agent'a yüklenmemiş. ssh -T git@github.com komutunu ve hesap ayarlarındaki anahtar listesini kontrol edin.

push sırasında «rejected … (fetch first)»

Sunucuda sizde olmayan commit'ler var; örneğin GitHub'da repository'yi README ile oluşturdunuz. Önce değişiklikleri alın: git pull --rebase origin main, ardından git push'u tekrarlayın. Kimin işinin üzerine yazacağınızı anlamadan --force kullanmayın.

Herkese açık repository'de gizli bilgiler

Bir commit'e bir kez girmiş şifre veya API anahtarı, dosyayı sonradan silseniz bile geçmişte kalır. Böyle bir anahtar hemen yenilenmeli, .env ise önceden .gitignore'a eklenmelidir.

Özet

Git, bilgisayarınızdaki versiyon kontrol aracıdır; GitHub ise bu repository'lerin bulutta yaşadığı ve etraflarında ekip çalışmasının kurulduğu hizmettir. GitLab, Bitbucket ve diğerleri Git'in değil, GitHub'ın alternatifleridir: hepsinin altında aynı commit'ler, branch'ler ve komutlar vardır. Yerel Git ile başlayın, ardından remote bağlayın ve SSH'yi kurun. Yerel repository'yi GitHub'a bağlamak, push, pull ve fetch, Git kursunda uygulamalı olarak ele alınıyor.

Sık sorulan sorular

GitHub ücretsiz mi?

Evet, ücretsiz plan sınırsız sayıda herkese açık ve özel repository oluşturmanıza izin verir. Ücretli planlar ekipler için gelişmiş özellikler ve özel projelerde daha fazla GitHub Actions dakikası ekler.

GitHub komut satırı olmadan kullanılabilir mi?

Evet, GitHub Desktop veya editörlerin yerleşik Git panelleriyle. Ama bu araçlar aynı Git komutlarını çağırır; özellikle çakışmalarda onları anlamak yine de faydalıdır.

GitHub hesabım varsa Git kurmam gerekir mi?

Evet. Hesap size depolama alanı verir; kodla yerelde çalışmak — commit, branch, push — için kurulu Git'i kullanacaksınız.

Bir repository GitHub'dan GitLab'a nasıl taşınır?

Yeni bir remote ekleyin ve tüm branch'leri ve tag'leri gönderin: git push gitlab --all ve git push gitlab --tags. Her iki hizmet de Git üzerinde çalıştığı için geçmiş eksiksiz taşınır.

Herkese açık repository ile özel repository arasındaki fark nedir?

Herkese açık olanı internetteki herkes görür, özel olanı yalnızca siz ve davet ettiğiniz kişiler. Portfolyo için herkese açık repository'ler gerekir.

Bu konuyu videoyla öğrenin

Bu konu “Sıfırdan Güvenilir Geliştiriciye Git” kursunda uygulamalı olarak ayrıntılı işleniyor.

Kursa git