Git — Programcilar Icin Temel Surum Kontrolu, Kod Yonetimi Dogru Yapin

Tek cumlede: Linux yaraticisi Linus Torvalds tarafindan gelistirilen acik kaynakli dagitik surum kontrol sistemi, her kod degisikligini kaydederek geri alma, dal olusturma ve isbirligi yapma imkani saglar — dunya capindaki gelistirme ekiplerinin %90’indan fazlasi tarafindan kullanilir.


Bu Pani Anlarini Yasadiniz mi?

Pani 1: Butun gece kod degistirdiniz, sadece tum projenin calismadigini bulmak icin. Dunku calisan surume geri donmek istiyorsunuz, ancak hic yedekleme yapmadiniz. Sifirdan hata ayiklamak zorundasiniz, kendinize yedekleme yapmadiginiz icin lanet ederek.

Pani 2: Patronunuz ayni anda iki acil hatayi duzeltmenizi ve yeni bir ozellik eklemenizi istiyor. Tum kodlar birbirine karismis, cozmesi imkansiz. Degisikliklerinizin yarisindayken, ilk hata acil bir surum gerektiriyor — ancak kodunuzda bitmemis yeni ozellik karismis durumda ve commit yapmaya korkuyorsunuz.

Pani 3: Siz ve uc is arkadasiniz ayni dosyayi ayni anda duzenliyorsunuz. Degisikliklerden sonra, dosyalari WeChat uzerinden paylasiyor ve manuel birlestiriyorsunuz — ancak A’nin degisiklikleri B tarafindan uzerine yaziliyor ve B’nin duzeltmesi C tarafindan geri aliniyor. Tum bir ogleden sonra birbirinizin calismasini “ustune yazarak” geciriyorsunuz.

Taniidik geldi mi?

Git, tum bu aciyi sona erdirmek icin burada.


Git Nedir?

Git, bir “surum kontrol aracidir” — basitce soylemek gerekirse: Kodunuzda yaptiginiz her degisikligi kaydeder. Gecmise bakabilir, herhangi bir surume geri donebilir, yeni fikirleri denemek icin bagimsiz dallar olusturabilir ve isiniz bittiginde onlari birlestirebilirsiniz.

Linux yaraticisi Linus Torvalds (evet, Linux’u yaratan kisi) tarafindan 2005 yilinda gelistirilmistir. O zamanlar, hizli, dagitik isbirligini destekleyen ve esnek dal yonetimine sahip bir surum kontrol sistemine ihtiyaclari vardi — mevcut seceneklerin hicbiri yeterince iyi degildi, bu yuzden iki haftada kendi yazdi.

Iki hafta. Ve dunya capinda gelistiriciler icin en vazgecilmez arac haline geldi.

Stack Overflow’un 2024 Gelistirici Anketine gore: Dunya capinda profesyonel gelistiricilerin yaklasik %90’i Git kullaniyor, GitHub’da 100 milyondan fazla depo var. Hangi programlama dilini kullanirsaniz kullanin veya ne tur bir proje uzerinde calisirsaniz calisin — Git, dil ve platformlar arasi “evrensel dildir.”


Git Gercek Sorunlari Cozmeye Nasil Yardimci Olur?

1. Surum Gecmisi: Bir “Pismanlik Hapi”, Herhangi Bir Duruma Donus

Kodu degistirirsiniz -> git add ile degistirilen dosyalari hazirlarsiniz -> git commit -m "ne yaptiniz" ile gonderir, bir surum anlik goruntusu olusturursunuz. Sonra degistirmeye devam eder, commit yapmaya devam edersiniz.

Bir seyi bozdugunuzda:

git log          # Tum tarihsel commit'leri goruntule
git checkout abc123  # Gecmis bir surume geri don
git revert abc123    # Belirli bir degisikligi geri alan "guvenli geri alma" (onerilen)

Gunluk is akisiniz sudur: Kod yaz -> git add -> git commit, tekrarla.

Bir sorunla karsilasin -> Gecmise goz at -> Geri al veya farklari karsilastir.

Artik “dunku surumu olan var mi?” diye sormaniza gerek yok.

2. Dal Yonetimi: Birden Fazla Ozellik Uzerinde Ayni Anda, Birbirine Karismadan Calisin

Bu, Git’in temel tasarimidir. Dallar “paralel evrenlerdir”:

  • main: Stabil, yayinlanabilir kod
  • feature/giris: Sizin gelistirdiginiz giris ozelligi
  • fix/odeme-hatasi: Bir is arkadasinin duzelttigi odeme hatasi
  • experiment/yeni-ui: Yeni bir UI yaklasimini deneme — basarisiz olursa sil

Herkes kendi dalinda bagimsiz calisir, birbirine karismaz. Is bittiginde birlestirin:

git checkout main
git merge feature/giris   # Giris ozelligi tamam, main'e birlestir

Yaygin is akisi (en populer Git Flow):

  1. main’den bir ozellik dali olusturun -> Ozellik dalinda gelistirin -> Tamamlayin -> main’e geri birlestirin
  2. Bir hata bulun -> Bir duzeltme dali olusturun -> main ve mevcut gelistirme dalina geri birlestirin
  3. Yayina hazir -> Bir release dali olusturun -> Sadece hatalari duzeltin, yeni ozellik yok -> main’e birlestirin

Ekip kodunun duzenli kalmasinin yolu budur — herkes kendi seridinde surer, birbirine carpmaz.

3. Ekip Isbirligi: “Senin Degisikliklerin Benimkilerin Uzerine Yazdi” Sorununu Cozme

Birden fazla kisinin ayni dosyayi duzenlemesi, gelistirmenin normal bir parcasidir. Git’in birlestirme mekanizmasi:

  1. Siz ve is arkadasiniz ikiniz de main’den en son kodu cekersiniz
  2. A, app.jsnin 10. satirini degistirir, B ayni dosyanin 50. satirini degistirir -> Git otomatik birlestirir, sorunsuz
  3. A ve B, ayni dosyanin ayni satirini degistirir -> celiski, Git isaretler ve hangisini tutacaginiza manuel karar vermenizi saglar
# Is arkadasinizin guncellemelerini cekin ve daliniza birlestirin
git pull origin main
# Celiski varsa, Git hangi dosyalarin celistikini gosterir
# Celiski dosyasini acin, soyle bir sey gorursunuz:
# <<<<<<< HEAD
# Sizin kodunuz
# =======
# Is arkadasinizin kodu
# >>>>>>> main
# Hangisini tutacaginiza manuel karar verin veya ikisini birlestirin, ardindan git add -> git commit

Gercek senaryo: Ben siparis modulunu yeniden yapilandiriyorum, bir is arkadasim ayni modulde bir performans hatasini duzeltiyor. Her birimiz kendi dallarimizda calisiyoruz, her gun maini cekerek senkronize kaliyoruz. Iki hafta sonra, benim gelistirmem bitti ve is arkadasim hatasini coktan duzeltti ve birlestirdi — ben birlestirdigimde sadece birkac kucuk celiskiyi cozmem gerekiyor. Tum surec boyunca, dosya paylasimi yok, birbirini bekleme yok.

4. Uzak Depolar: GitHub/GitLab/Gitee “Merkezi Depolar” Olarak

Yerel olarak Git ile surum yonetimi, uzak depolar ile senkronizasyon ve isbirligi:

git clone https://github.com/xxx/project.git   # Uzak depoyu yerel kopyala
git push origin main         # Yerel commit'lerinizi uzaga gonder
git pull origin main         # Uzaktaki en son guncellemeleri cek

Is akisi:

  1. Sabah -> git pull ile en son kodu alin
  2. Dal olusturun -> Gelistirin
  3. Is bittiginde, git push ile uzaga gonderin -> GitHub/GitLab’de Pull Request olusturun
  4. Is arkadasi kodu inceler -> Onaylar -> main dalina birlestirir

Profesyonel Incelemeler ve Kullanici Geri Bildirimleri

KaynakInceleme
Atlassian (Jira’nin sirketi)“Git, bugun dunyada en yaygin kullanilan modern surum kontrol sistemidir ve bunun iyi bir nedeni vardir”
GitHub CEO’su”Git, yazilim olusturma seklimizi degistirdi. Sadece bir arac degil — modern yazilim gelistirmenin temelidir”
Stack Overflow AnketiDunya capinda gelistiricilerin %90+ i Git kullaniyor, yillardir tum gelistirici araclari arasinda 1 numara

Gercek Kullanicilar Ne Diyor

“Git’i ilk kullandigimda, ezberlenecek o kadar cok komutla ugrasmanin zahmetli oldugunu dusundum. Iki hafta sonra geri donemedim — simdi Git olmadan kod yazmaktan korkuyorum. Sadece kodu yonetmek degil, bana ‘her seyi degistirebilirim, bozulursa geri alabilirim’ guveni veriyor.” — Java Backend Gelistiricisi, Juejin

“Beni en cok etkileyen Git’in dal modeliydi. SVN ile dal olusturmak sonsuza kadar surerdi. Git’te dal olusturma aninda. Bu, gelistirme yaklasimimi tamamen degistirdi — artik deneysel degisikliklerin ana kodu etkilemesinden korkmuyorum, sadece yeni bir dal olusturup deniyorum. Is yaramazsa siliyorum.” — Tam Yigin Gelistirici, V2EX

“Yeni ise alimlari mulakata alirken basit bir soru sorarim: ‘Git kullandiniz mi?’ Sadece ‘evet’ cevabini verip dallari ve celiski cozumunu aciklayamazlarsa, gercek ekip gelistirmesi yasamamis olabileceklerini dusunurum.” — Muhendislik Yoneticisi, Zhihu

“Git’in beni en cok etkiledigi an: Bir keresinde yanlislikla bir silme komutu calistirdim ve tum proje klasoru gitti. Soguk ter — sonra az once push yaptigimi hatirladim. git clone ile her seyi geri cektim, tum kod saglam. O zamandan beri dini olarak commit+push yapiyorum.” — Frontend Gelistirici, Reddit


Benzer Araclarla Karsilastirma

YonGitSVN (Subversion)Mercurial
MimariDagitik (herkesin yerel tam depo)Merkezi (merkez sunucuya bagli)Dagitik
Dal yonetimi⭐⭐⭐⭐⭐ Hafif, hizli gecis⭐⭐ Dal = klasor kopyalama, yavas⭐⭐⭐⭐ Iyi
Cevrimdisi calismaDesteklenirCogui islem ag gerektirirDesteklenir
Ogrenme egrisi⭐⭐⭐⭐ Cok komut, ogrenilecek kavram⭐⭐ Basit kavramlar, kolay baslangic⭐⭐⭐ Nispeten basit
Pazar payi~%90~%5<%2
Buyuk proje performansi⭐⭐⭐⭐⭐ Mukemmel⭐⭐⭐ Orta⭐⭐⭐⭐ Iyi
Barindirma platformlariGitHub/GitLab/GiteeKendi kendine barindirmaDaha az secenek

Sonuc: SVN ve Mercurial’in kendi teknik guclu yonleri vardir, ancak Git surum kontrol pazarini fiilen birlestirmistir. On yildan eski bir projeyi surdurmuyorsaniz, sadece Git ogrenin — bu endustri standardidir.


Indirme ve Kurulum Kilavuzu

Resmi Indirme

Git’in resmi web sitesi git-scm.com’dur:

KanalIndirme BaglantisiNotlar
Resmi site (onerilen)git-scm.com/downloadsWindows/macOS/Linux tum platformlar, isletim sisteminizi otomatik algilar
GitHub yansimasiGit for WindowsAcik kaynak depo, Windows surumu bagimsiz bakim

⚠️ Guvenlik Hatirlatmasi: git-scm.com resmi sitesinden indirin, ucuncu taraf indirme sitelerini veya bulut surucu baglantilarini kullanmayin. Git acik kaynaklidir (GPL lisansi), Windows kurulumcusu yaklasik 50MB. Ucuncu taraf dagitimlari kotu amacli yazilim ekleyebilir.

3 Dakikalik Hizli Baslangic

Kurulum:

  1. git-scm.com/downloads adresini acin, isletim sisteminize uygun surumu indirin
  2. Windows kullanicilari kurulum sirasinda tum varsayilan secenekleri koruyabilir (“Git Bash” ve “Git’i PATH’e ekle” isaretli)
  3. Kurulumdan sonra, terminali (veya Git Bash’i) acin, git --version yazarak basarili kurulumu onaylayin

Kullanici adi ve e-posta yapilandirin (bir kere yapin):

git config --global user.name "Adiniz Soyadiniz"
git config --global user.email "emailiniz@ornek.com"

Ilk depo:

cd proje-dizininiz
git init                    # Depoyu baslat
git add .                   # Tum dosyalari hazirliga ekle
git commit -m "Ilk commit"  # Ilk surumu olustur

Onerilen Yardimci Araclar

AracAmacResmi Site
GitHub DesktopGit GUI, Git yeni baslayanlari icin uygundesktop.github.com
TortoiseGitWindows Gezgininde sag tik Git menusutortoisegit.org
SourcetreeAtlassian’in Git GUI’sisourcetreeapp.com

SSS

S: Git ogrenmesi zor mu? Git’in kavramlari (depo, commit, dal, birlestirme, uzak depo) kendi basina basittir, ancak komut sayisinin coklugu yeni baslayanlar icin goz korkutucu olabilir. 3-5 temel komutla baslayin (init/add/commit/push/pull), GitHub Desktop gibi GUI araclariyla gecis yapin, ardindan kavramlari anladiktan sonra gelismis komutlari ogrenin.

S: Git ve GitHub ayni sey midir? Hayir. Git bir surum kontrol aracidir (bilgisayarinizda calisan bir program), GitHub ise Git tabanli bir uzak kod barindirma platformudur (bir web sitesi). Su sekilde dusunun: Git “e-posta istemcisi”, GitHub “e-posta sunucusu”dur. Ayrica GitLab (kendi kendine barindirma) ve Gitee (Cin tabanli) gibi alternatifler de vardir, hepsi alt tarafta Git kullanir.

S: Birden fazla kisi ayni kod satirini degistirirse ne olur? Buna “celiski” denir. Git hangisini tutacagina otomatik karar vermez — celiskili satirlari isaretler ve sizin veya is arkadasinizin manuel olarak secmesini saglar. Celiskiler sik olmaz (genellikle herkes farkli modullerde calisir) ve olduklarinda da korkutucu degildir — Git hangi satirlarin celistikini tam olarak soyler ve hangi surumu tutacaginiza siz karar verirsiniz.


Git, yazilim gelistirmenin “emniyet kemeri”dir — onunla, kodu cesurca degistirmeye ve yeni fikirler denemeye cesaret edersiniz. Kodunuzu daha iyi yapmayabilir, ancak kesinlikle daha guvenle yazmanizi saglar. Dunya capindaki gelistirme ekiplerinin %90’i kullanir. Bu bir secim degil — zorunlu bir derstir.

返回工具清单

İndir

Bu sayfadaki bazı bağlantılar satış ortağı bağlantılarıdır. Size ek bir maliyet olmadan küçük bir komisyon kazanabiliriz. Tüm öneriler objektif incelemelere dayanmaktadır.