Bilgisayarında şöyle bir klasör oldu mu hiç: odev.docx, odev_son.docx, odev_son_duzeltilmis.docx, odev_GERCEKTEN_son.docx? Hangisinin en güncel olduğunu, dünkü sürümde neyi sildiğini hatırlamak imkânsız hâle gelir.
Yazılımcılar bu sorunu yıllar önce çözdü. Çözümün adı Git. Bu yazıda Git’in ne olduğunu, GitHub’dan farkını ve neden yazılıma yeni başlayan herkesin onu erkenden öğrenmesi gerektiğini bir örnekle anlatıyorum.
Git: kodun için kayıt noktaları
Bir video oyununda kayıt noktası (save point) düşün. Zor bir bölüme girmeden önce kaydedersin; işler kötü giderse oraya dönersin.
Git, dosyaların için tam olarak bunu yapıyor. Projende bir değişiklik yaptığında bir kayıt noktası oluşturuyorsun. Git her kayıt noktasında neyin, ne zaman ve kim tarafından değiştiğini saklıyor. İstediğin zaman eski bir hâle dönebilir ya da iki sürüm arasındaki farkı görebilirsin. Buna sürüm kontrolü (version control) deniyor.
Git’i 2005’te Linus Torvalds yazdı. Amaç, binlerce kişinin aynı anda üzerinde çalıştığı Linux çekirdeğinin geliştirilmesini yönetmekti. Bugün dünyadaki yazılım projelerinin çok büyük kısmı Git kullanıyor.
En önemli nokta: Git senin bilgisayarında çalışan bir program. İnternet olmadan da kullanabilirsin.
GitHub: Git depolarının buluştuğu site
GitHub ise Git ile tutulan projeleri internette saklayan ve paylaşmayı sağlayan bir web sitesi. 2008’de kuruldu, 2018’de Microsoft tarafından satın alındı.

Aradaki farkı aklında tutmanın kolay yolu:
| Git | GitHub | |
|---|---|---|
| Ne? | Sürüm kontrol programı | Git projelerini barındıran web sitesi |
| Nerede çalışır? | Senin bilgisayarında | İnternette |
| İnternet gerekir mi? | Hayır | Evet |
| Benzetme | Fotoğraf makinesi | Fotoğrafları paylaştığın albüm sitesi |
GitHub tek seçenek de değil; GitLab ve Bitbucket gibi benzer siteler de var. Ama en yaygın olanı GitHub.
Bir örnekle: alışveriş listesi
Komutları gerçekten çalıştırarak görelim. Bir klasör açıp onu Git deposuna (repository) çeviriyoruz:
$ git initInitialized empty Git repository in .../proje/.git/
Klasöre liste.txt adlı bir dosya ekledik (içinde “Alışveriş listesi” ve “- süt” yazıyor). Git ne düşünüyor, soralım:
$ git statusOn branch mainNo commits yetUntracked files: (use "git add <file>..." to include in what will be committed) liste.txt
Git dosyayı görüyor ama henüz takip etmiyor (untracked). İki adımda kayıt noktası oluşturuyoruz:
$ git add liste.txt$ git commit -m "İlk liste"[main (root-commit) a32b283] İlk liste 1 file changed, 2 insertions(+) create mode 100644 liste.txt
git add: “Bu dosyayı bir sonraki kayıt noktasına dahil et.”git commit: “Kayıt noktasını oluştur.”-mile yanına kısa bir açıklama yazıyoruz.
Bu kayıt noktasına commit deniyor. a32b283 ise commit’in kimliği; her commit’in kendine özgü bir kodu var. Sen aynı komutları çalıştırınca bu kod farklı çıkacak, çünkü içinde tarih ve yazar bilgisi de var.
Şimdi listeye ekmek ekleyelim ve Git’e neyin değiştiğini soralım:
$ git diff Alışveriş listesi - süt+- ekmek
(Çıktının başındaki birkaç teknik satırı kısalttım.) Başında + olan satır yeni eklenen satır. Silinen bir satır olsaydı başında - görürdük. Bunu da kaydedelim ve geçmişe bakalım:
$ git add liste.txt$ git commit -m "Ekmek eklendi"$ git log --onelinee66ce47 Ekmek eklendia32b283 İlk liste
Artık listenin iki sürümü de güvende. odev_son_son.docx dönemi bitti: Tek bir dosya var, tüm geçmişi Git’te.
Küçük bir Git sözlüğü
| Terim | Anlamı |
|---|---|
| Depo (repository, repo) | Git’in takip ettiği proje klasörü |
| Commit | Bir kayıt noktası |
| Branch (dal) | Ana projeyi bozmadan denemeler yaptığın paralel bir çalışma kolu |
| Push | Bilgisayarındaki commit’leri GitHub’a göndermek |
| Pull | GitHub’daki yeni commit’leri bilgisayarına almak |
| Clone | GitHub’daki bir projenin kopyasını bilgisayarına indirmek |
Neden şimdiden öğrenmelisin?
- Hata yapmaktan korkmazsın. Bir şeyi bozarsan son çalışan sürüme dönebilirsin.
- Ekip çalışmasının dili bu. İşe girdiğinde ilk günlerde karşına çıkacak araçlardan biri neredeyse kesin Git olacak.
- GitHub senin vitrinin. Yaptığın projeleri GitHub’a koyarsan, iş başvurusunda “Python biliyorum” demek yerine kodunu gösterebilirsin.
Bu blogdaki tüm Python dersleri de GitHub’da duruyor. Derslerdeki “Colab’da aç” düğmesi, not defterini doğrudan GitHub’daki depodan açıyor: python-dersleri
Devamını oku: Yapay Zekâ Mühendisi Olmak İçin Yol Haritası
Nereden başlamalı?
- GitHub’da ücretsiz bir hesap aç.
- Bilgisayarına Git’i kur (git-scm.com). Mac ve Linux’ta çoğu zaman zaten yüklü geliyor.
- Bu yazıdaki alışveriş listesi örneğini kendin yap:
init,add,commit,log. - İlk projeni GitHub’a yükle. Python derslerinde yazdığın sayı tahmin oyunu iyi bir aday.
BTK akademideki Atıl Samancıoğl’un Versiyon Kontrolleri: Git ve GitHub dersi güzel bir kaynak.
Devamını oku: Futbol Veri Projesi 1: Maç Verisini Toplamak ve Temizlemek











