Skip to main content
•7 dk okuma

Git, GitHub Nedir? Nasıl Kullanılır?

Mustafa Kürşad BaşerMustafa Kürşad BAŞER
••
Git, GitHub Nedir? Nasıl Kullanılır?

Git & GitHub Nedir?

Git, bir veri dosyasının değişimlerini izlemek ve kontrol etmek için kullanılan bir dağıtık sürüm kontrol sistemidir. GitHub ise, Git üzerine kurulu bir web tabanlı hizmettir ve kullanıcıların kodlarını paylaştıkları ve geliştirdikleri bir ortam sağlar.

İkisi sık karıştırılır, oysa aynı şey değiller. Git bilgisayarınızda çalışan bir sürüm kontrol programı; internet olmadan da tam kapasite çalışır. GitHub ise Git depolarını barındıran bir web servisi. Yani Git araç, GitHub o aracın çıktısını sakladığınız yer. GitHub olmadan Git kullanabilirsiniz, tersi mümkün değil.

Git ve GitHub arasındaki en belirgin fark, Git'in yerel bir sürüm kontrol sistemi olması ve GitHub'ın ise bu sistemin web tabanlı bir hizmeti olmasıdır. Git, yalnızca bilgisayarınızda kodlarınızı yönetmenize yardımcı olurken, GitHub ise bu kodlarınızı lokasyon bağımsız olarak diğer kullanıcılarla paylaşmanıza ve en önemlisi ekip çalışması yapmanıza olanak tanır.

Bu seri için devam yazım olan Git'te Pull Request Nasıl Yapılır: Adım Adım PR yazıma da göz atmanızı öneririm.

Git Kurulumu

Git'i indirmek için, resmi Git web sayfasına gidin (veya buraya tıklayın) ve işletim sisteminize uygun bağlantı üzerinden indirin. İndirme işlemini tamamladıktan sonra, yükleme dosyasını çalıştırın ve kurulum sihirbazını izleyin.

Kurulum tamamlandıktan sonra, Git'i yapılandırmak için aşağıdaki komutları kullanabilirsiniz.

bash
git config --global user.name "Adınız Soyadınız"git config --global user.email "email@adresiniz.com"

Yukarıdaki komutları çalıştırdığınızda, bu kullanıcı adı ve mail adresi tüm Git projelerinizde kullanılır hale gelecektir.

GitHub Nedir?

GitHub, Git depolarını barındıran bir platform. Ama işi yalnızca dosya saklamak değil; asıl değeri Git’in kendisinde olmayan işbirliği araçlarında. Pull request ile kod incelemesi, issue ile hata takibi, Actions ile otomatik test ve dağıtım hep GitHub’ın eklediği katman. Aynı işi yapan GitLab ve Bitbucket gibi alternatifler de var, temeldeki Git ise hepsinde aynı.

GitHub, açık kaynaklı projeler için özellikle popülerdir, ancak kapalı kaynaklı projeler için de kullanılabilir. Özel depolama alanı ve özel projeler için ücretli abonelikler sunar. GitHub, birçok geliştirici tarafından kullanılan ve birçok projenin yönetiminde kullanılan bir platformdur.

Git Komut Rehberi

Git kurulumunu tamamladıktan sonra artık GitHub kullanmaya da başlayabiliriz. GitHub'ın resmi Training GitHub dokümanı başlangıç için iyi bir seçim olur.

Ek olarak, konu komutlar üzerinde çalışma olduğu zaman, pratik yapmak için eşsiz bir araç mevcut. Git Explorer bağlantısına giderek repo "clone"lamayı, "commit"lemeyi ve çok daha fazlası hakkında kullanım örneklerini kolayca edinebilirsiniz.

GitHub'da en sık kullanılan komutlardan bazıları

1. git clone

Bu komut, bir repositorydeki projeyi kopyalar. Yani, projenin tamamını veya belirli bir branchini (dalını) indirmenizi sağlar.

bash
git clone https://github.com/kullanici-adi/proje-adi.git

Bu örnekte, "https://github.com/kullanici-adi/proje-adi.git" adresindeki projeyi yerel makinenize klonlamak için git clone komutunu kullanıyoruz.

2. git pull

Bu komut, repodaki en son değişiklikleri almanızı sağlar. Yani, diğer kullanıcıların yaptığı güncellemeleri yerel kopyanıza getirir.

bash
git pull origin main

Bu örnekte, uzak depodaki "main" branch'deki en son değişiklikleri almak için git pull komutunu kullanıyoruz.

3. git push

Bu komut, yerelde yaptığınız değişiklikleri repoya göndermenizi sağlar. Yani, kendi çalışmalarınızı diğer kullanıcılarla paylaşabilirsiniz.

bash
git push -u origin main

Bu örnekte, yereldeki değişiklikleri uzak depodaki "main" branchine göndermek için git push komutunu kullanıyoruz.

4. git add

Bu komut, değişiklikleri takip etmek istediğiniz dosyaları "staging area" olarak adlandırılan bir alana eklemenizi sağlar. Yani, Git'e hangi dosyaların takip edileceğini söylersiniz.

bash
git add dosya.js

Bu örnekte, "dosya-adi.js" adlı dosyayı değişiklikleri takip etmek için git add komutunu kullanıyoruz.

Tüm değişiklikleri eklemek için:

bash
git add .

5. git commit

Bu komut, hazırlık alanındaki (staging area) değişiklikleri yerel depoya kalıcı olarak yazar. Ortaya çıkan commit, o andaki dosya durumunun bir fotoğrafıdır ve kendine ait bir kimliği vardır. Değişiklikler hala bilgisayarınızda; sunucuya gitmeleri için push gerekir.

bash
git commit -m "Değişiklik notu"

Bu örnekte, yapılan değişiklikleri "Değişiklik notu" başlığıyla yerel depoya kaydetmek için git commit komutunu kullanıyoruz.

6. git branch

Projedeki mevcut branchleri (dalları) listelemek veya yeni bir branch oluşturmak için kullanılır.

bash
git branch yeni-branch

Bu örnekte, "yeni-branch" adında yeni bir branch oluşturmak için git branch komutunu kullanıyoruz.

7. git checkout

Bu komut, farklı bir branch'e geçmek veya mevcut dosyanın farklı bir sürümüne geçmek için kullanılır.

bash
git checkout yeni-branch

Bu örnekte, "yeni-branch" adlı branch'e geçmek için git checkout komutunu kullanıyoruz.

Ana branch'ten yeni bir branch oluşturmak, yani ana branch'i birebir yeni branchte kopyalamak:

bash
git checkout -b yeni-branch-adı ana-branch-adı

Burada, git checkout -b komutu, yeni bir branch oluştururken aynı zamanda o branch'e geçiş yapmanızı sağlar. yeni-branch ise oluşturmak istediğiniz yeni branch'in ismidir.

8. git merge

Bu komut, farklı branch'lerdeki değişiklikleri birleştirmenizi sağlar. Yani, farklı çalışma hatlarını tek bir hat üzerinde birleştirir.

bash
git merge ana-branch yeni-branch

Bu örnekte, "ana-branch" ve "yeni-branch" branchlerini (dallarını) değişiklikleri birleştirmek için git merge komutunu kullanıyoruz.

Kısaltmalar (flag) Ne Anlama Geliyor?

-u (veya --update): Bu flag, git push komutu ile kullanılır ve uzak sunucuya yerel branch'teki değişiklikleri gönderirken aynı adı taşıyan bir branch olup olmadığını kontrol eder. Eğer aynı adı taşıyan bir başka branch bulunursa, yerel branch ile onu ilişkilendirir (tracking) ve sonraki push işlemlerinde hedef branch olarak otomatik olarak bu uzak branch'i kullanır.

-m (veya --message): Bu flag, git commit komutu ile kullanılır ve bir commit mesajı eklemek için kullanılır. Mesajı komut satırında belirterek, direkt olarak commit işlemi gerçekleştirilir. Örneğin: git commit -m "Değişiklikler eklendi".

-b (veya --branch): Bu flag, git checkout veya git branch komutları ile kullanılır ve bir branch oluştururken veya bir branch'a geçerken kullanılır. Örneğin: git checkout -b yeni-branch komutu, hem yeni bir branch oluşturur hem de o branch'e geçiş yapar.

-d (veya --delete): Bu flag, git branch komutu ile kullanılır ve bir branch'i siler. Örneğin: git branch -d silinecek-branch komutu, silincek-branch adındaki branch'i siler.

-f (veya --force): Bu flag, git push komutu ile kullanılır ve uzak sunucuya yerel branch'teki değişiklikleri zorla (force) gönderir. Özellikle, geçmişte yapılmış bir push işleminin tersine çevrilmesi gerektiğinde veya zorla güncelleme yapılması gerektiğinde kullanılır. Ancak dikkatli kullanılmalıdır, çünkü uzak sunucuda yapılan değişikliklerin üzerine yazılabilir ve veri kaybına neden olabilir.

Pull Request Nedir?

Pull request (ya da çekme isteği, kısaca PR), yazılım geliştirme sürecinde ekip içi işbirliğini sağlayan ve kod incelemelerini kolaylaştıran önemli bir araçtır. Sadece ekip içi değil, açık kaynaklı projelerde ekip dışından katkı sağlamak isteyen geliştiricilerin de kullandığı bir araçtır.

Genellikle Git gibi versiyon kontrol sistemlerinde kullanılan Pull Request, yeni bir kod değişikliğinin incelenmesi ve onaylanması sürecini yönetir. Bu şekilde projeye katkı sağlamak isteyen ekip üyelerinin ya da geliştiricilerin, projenin sahibine değişiklikleri önerir ve projenin sahibi bu değişiklikleri projeye dahil etmek veya reddetmek için karar verir.

Pull Request ile ilgili daha detaylı incelemek için, Git'te Pull Request Nasıl Yapılır: Adım Adım PR yazıma göz atmanızı öneririm.

Sonuç

Git’i öncüllerinden ayıran şey dağıtık olması. Deponun tam kopyası, bütün geçmişiyle birlikte her geliştiricinin bilgisayarında durur. Bunun iki pratik sonucu var: internet olmadan commit atabilir, dal açabilir, geçmişe bakabilirsiniz. Ve merkezi sunucu tamamen kaybolsa bile proje geçmişi ekipteki herkeste mevcuttur.

Öğrenme tarafında dürüst olalım: günlük işi görecek beş altı komut gerçekten kısa sürede oturur. add, commit, push, pull ve branch ile uzun süre idare edersiniz. Ama Git’in tamamı basit değil; rebase, cherry-pick ya da birleştirme çakışmaları ilk karşılaşmada kimseyi rahat bırakmaz. İyi haber şu ki commit atılmış hiçbir şey gerçekten kaybolmaz, git reflog çoğu hatayı geri alır.

Yeni başlıyorsanız iki şey öneririm. Küçük ve sık commit atın, mesajlarına da ne yaptığınızı yazın. "update" diye geçilmiş bir commit, altı ay sonra geçmişe bakarken hiçbir işe yaramaz. Ana dalda doğrudan çalışmayı da bırakın; her iş için ayrı bir dal açmak, bir şeyler ters gittiğinde geri dönüşü çok kolaylaştırır. Gerisi zaten kullandıkça oturuyor.

Bu seri için devam yazım olan Git'te Pull Request Nasıl Yapılır: Adım Adım PR yazıma da göz atmanızı öneririm.

Referanslar

Bu yazıyı paylaş

Link kopyalandı!
Mustafa Kürşad Başer
Yazar

Mustafa Kürşad Başer

Kıdemli Yazılım Mühendisi

Karmaşık sorunlara zarif çözümler üretmekten keyif alan, tutkulu bir yazılım mühendisi. Kodlamanın ötesinde, teknoloji, sanat ve insan bilincinin kesişim noktalarını keşfetmekle derinden ilgileniyor.