Takip et

Git Bash ve GitHub Başlangıç Rehberi: Pushing, Pulling ve Versiyon Kontrol

Modern yazılım geliştirme dünyasında, projelerinizi yönetmek, değişiklikleri takip etmek ve ekip arkadaşlarınızla sorunsuz bir şekilde işbirliğ…

Git Bash ve GitHub Başlangıç Rehberi: Pushing, Pulling ve Versiyon Kontrol

Modern yazılım geliştirme dünyasında, projelerinizi yönetmek, değişiklikleri takip etmek ve ekip arkadaşlarınızla sorunsuz bir şekilde işbirliği yapmak vazgeçilmezdir. İşte tam da bu noktada Git ve GitHub devreye girer. Git, dağıtık bir versiyon kontrol sistemi iken, GitHub bu sistemin bulut tabanlı bir barındırma servisidir. Bu rehber, Git Bash terminalini kullanarak yerel depolarınızda çalışmayı, değişiklikleri GitHub’a “push” etmeyi ve oradan “pull” etmeyi adım adım öğrenmenizi sağlayacak, böylece versiyon kontrol dünyasına sağlam bir giriş yapabileceksiniz.

1. Versiyon Kontrol Nedir ve Neden Önemlidir?

Versiyon kontrol sistemi (VCS), zaman içinde dosyalarda ve dizinlerde yapılan değişiklikleri yöneten bir araçtır. Bu sistemler, bir projenin farklı versiyonlarını kaydetmenize, geçmişe dönmenize ve birden fazla kişinin aynı proje üzerinde eş zamanlı çalışmasına olanak tanır.

Hata Takibi ve Geri Alma

Bir yazılım projesinde hata yapmak kaçınılmazdır. Versiyon kontrol sistemleri sayesinde, projenizin herhangi bir önceki sürümüne kolayca geri dönebilir, hatalı kodları ayıklayabilir veya yapılan değişiklikleri tamamen geri alabilirsiniz. Bu, geliştirme sürecinde büyük bir güvenlik ağı sağlar.

Ekip Çalışması ve Çatışma Çözümü

Birden fazla geliştiricinin aynı proje üzerinde çalıştığı durumlarda, herkesin kendi değişikliklerini yaparken diğerlerinin çalışmalarını bozmaması kritiktir. VCS’ler, bu değişiklikleri birleştirmeyi (merge) kolaylaştırır ve olası çakışmaları (conflict) tespit ederek çözmenize yardımcı olur. Böylece, ekip üyeleri bağımsız çalışırken bile entegrasyon sorunları minimuma iner.

Proje Geçmişi ve Şeffaflık

Her kaydedilen değişiklikle birlikte, kimin neyi ne zaman değiştirdiğine dair detaylı bir geçmiş tutulur. Bu, projenin evrimini anlamak, belirli bir özelliğin ne zaman eklendiğini görmek veya bir hatanın ne zaman ortaya çıktığını tespit etmek için paha biçilmez bir kaynaktır. Şeffaflık, hem bireysel geliştiriciler hem de ekipler için hesap verebilirliği artırır.

2. Git ve Git Bash Kurulumu

Git Bash, Windows kullanıcıları için Git komutlarını çalıştırmak üzere bir Unix benzeri komut satırı deneyimi sunan bir uygulamadır. Kurulum oldukça basittir.

Git Kurulumu Adımları

  1. Git’in resmi web sitesi olan git-scm.com/downloads adresine gidin.
  2. İşletim sisteminize (Windows, macOS, Linux) uygun sürümü indirin.
  3. Kurulum dosyasını çalıştırın. Çoğu adımda varsayılan seçenekleri kabul edebilirsiniz, ancak “Adjusting your PATH environment” adımında “Git from the command line and also from 3rd-party software” seçeneğini işaretlediğinizden emin olun. Bu, Git’i komut satırından ve diğer uygulamalardan kullanabilmenizi sağlar.
  4. Kurulum tamamlandıktan sonra, Başlat menüsünden “Git Bash” uygulamasını arayarak açabilirsiniz.

Git Bash’e Giriş

Git Bash’i açtığınızda, siyah bir terminal penceresiyle karşılaşacaksınız. Burası, Git komutlarını yazacağınız yerdir. Windows Komut İstemi’nden (CMD) veya PowerShell’den farklı olarak, Git Bash size Linux benzeri komutları (ls, cd, pwd vb.) kullanma imkanı sunar.

Temel Git Ayarları

Git’i kullanmaya başlamadan önce, kimliğinizi belirtmeniz gerekir. Bu bilgiler, yaptığınız her değişiklikle birlikte kaydedilir.

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

Bu komutlar, global olarak (yani tüm Git depolarınız için) kullanıcı adınızı ve e-posta adresinizi ayarlar. Ayarlarınızı kontrol etmek için:

git config --list

3. Yerel Git Deposu Oluşturma ve Temel Komutlar

Bir Git deposu (repository), projenizin tüm dosyalarını ve onların tüm geçmişini içeren bir klasördür. Yerel depo, projenizin kendi bilgisayarınızdaki kopyasıdır.

Yeni Bir Depo Başlatma (git init)

Mevcut bir klasörü Git deposuna dönüştürmek veya yeni bir proje başlatmak için git init komutunu kullanırız. Öncelikle, projenizi oluşturmak istediğiniz dizine gidin:

mkdir my-first-project
cd my-first-project
git init

Bu komut, my-first-project klasörünün içine gizli bir .git klasörü oluşturur. Bu klasör, Git'in projenizin tüm versiyon geçmişini sakladığı yerdir.

Dosyaları Takip Etme (git add)

Git, değişiklikleri kaydetmeden önce hangi dosyaların kaydedileceğini bilmelidir. git add komutu, dosyaları "staging area" (sahneleme alanı) adı verilen bir alana ekler. Bu alan, bir sonraki kaydetme işlemine (commit) dahil edilecek değişiklikleri tutar.

touch index.html  # Yeni bir dosya oluşturur
git add index.html # index.html dosyasını sahneleme alanına ekler
git add .          # Tüm yeni ve değiştirilmiş dosyaları sahneleme alanına ekler

Değişiklikleri Kaydetme (git commit)

Sahneleme alanındaki değişiklikleri projenizin geçmişine kalıcı olarak kaydetmek için git commit komutunu kullanırız. Her commit, bir mesaj içermelidir ki bu mesaj, o commit'te ne gibi değişiklikler yapıldığını açıklar.

git commit -m "İlk commit: index.html dosyası eklendi"

-m bayrağı, commit mesajını doğrudan komut satırında belirtmenizi sağlar.

Depo Durumunu Kontrol Etme (git status, git log)

Projenizin mevcut durumunu görmek için git status komutunu kullanabilirsiniz. Hangi dosyaların değiştirildiğini, sahneleme alanında olduğunu veya takip edilmediğini gösterir.

git status

Projenizin commit geçmişini görmek için ise git log komutunu kullanırız. Bu, her commit'in yazarını, tarihini ve mesajını gösterir.

git log

4. GitHub'a Giriş ve Uzak Depo İlişkisi

GitHub, Git depolarınızı barındırmak için kullanılan popüler bir bulut servisidir. Projelerinizi GitHub'a yükleyerek, dünyanın herhangi bir yerinden erişebilir, başkalarıyla işbirliği yapabilir ve projelerinizi yedekleyebilirsiniz.

GitHub Hesabı Oluşturma

Henüz bir GitHub hesabınız yoksa, github.com/join adresinden ücretsiz bir hesap oluşturmanız gerekir. Adımları takip ederek kaydolun ve e-posta adresinizi doğrulayın.

Yeni Bir GitHub Deposu Oluşturma

  1. GitHub hesabınıza giriş yapın.
  2. Sağ üst köşedeki "+" simgesine tıklayın ve "New repository" seçeneğini seçin.
  3. Deponuza bir isim verin (örneğin, my-first-project).
  4. Açıklama ekleyebilirsiniz (isteğe bağlı).
  5. Deponun "Public" (herkes görebilir) veya "Private" (sadece siz ve yetki verdikleriniz görebilir) olacağını seçin.
  6. "Initialize this repository with a README" seçeneğini İŞARETLEMEDEN bırakın, çünkü yerel bir depoyu bağlayacağız.
  7. "Create repository" butonuna tıklayın.

Depoyu oluşturduktan sonra, GitHub size yerel deponuzu bu uzak depoya nasıl bağlayacağınıza dair komutlar gösterecektir. Bu komutları kullanacağız.

Yerel Depoyu Uzak Depoya Bağlama (git remote add)

Yerel deponuzu GitHub'daki uzak depoya bağlamak için git remote add komutunu kullanırız. Bu komut, uzak deponuza bir takma ad (genellikle origin) verir ve URL'sini belirtir.

git remote add origin https://github.com/KullanıcıAdınız/my-first-project.git

KullanıcıAdınız yerine kendi GitHub kullanıcı adınızı ve my-first-project yerine deponuzun adını yazmayı unutmayın. Bu komut, yerel deponuza uzak deponun nerede olduğunu söyler.

5. Değişiklikleri Uzak Depoya Gönderme: Pushing

Yerel deponuzda yaptığınız ve commit ettiğiniz değişiklikleri GitHub'daki uzak depoya gönderme işlemine "push" denir. Bu, çalışmalarınızı yedeklemenin ve diğer ekip üyeleriyle paylaşmanın yoludur.

Push İşlemi Nedir?

Push, yerel deponuzdaki commit'leri uzak depoya yükler. Genellikle, yerel deponuzdaki ana dalı (main veya master) uzak deponun ana dalına gönderirsiniz. Bir commit'i push ettiğinizde, o commit ve ondan önceki tüm commit'ler uzak depoya aktarılır.

İlk Push (git push -u origin main)

Bir depoyu ilk kez uzak depoya push ederken, yerel dalınızı uzak daldaki bir daldan takip etmesini belirtmek için -u (veya --set-upstream) bayrağını kullanırız. Bu, sonraki push ve pull işlemleri için varsayılan bir bağlantı kurar.

git push -u origin main

Bu komut, yerel main dalındaki tüm commit'leri origin (yani GitHub'daki deponuz) üzerindeki main dalına gönderir. Sizden GitHub kullanıcı adınızı ve parolanızı (veya kişisel erişim token'ınızı) girmeniz istenebilir.

Sonraki Push İşlemleri (git push)

İlk push işleminden sonra, yerel dalınızın uzak daldan takip ettiğini belirttiğiniz için, sonraki push işlemleri için sadece git push yazmanız yeterlidir:

# Yeni değişiklikler yapın, add ve commit edin
echo "console.log('Hello Git!');" >> script.js
git add script.js
git commit -m "script.js eklendi"

# Değişiklikleri uzak depoya gönderin
git push

6. Uzak Depodan Değişiklikleri Çekme: Pulling

Ekip arkadaşlarınızın veya sizden başka birinin GitHub'daki depoya yaptığı değişiklikleri kendi yerel deponuza indirme işlemine "pull" denir. Bu, projenizin güncel kalmasını sağlar.

Pull İşlemi Nedir?

Pull, uzak depodaki değişiklikleri yerel deponuza indirir ve yerel dalınızla birleştirir (merge). Bu işlem aslında iki ayrı adımdan oluşur: git fetch (değişiklikleri indirir ama birleştirmez) ve git merge (indirilen değişiklikleri yerel dala birleştirir).

Değişiklikleri Çekme (git pull)

Uzak depodaki en son değişiklikleri almak için git pull komutunu kullanırız:

git pull origin main

Eğer yerel dalınız uzak dalı takip ediyorsa (ilk push'ta -u ile ayarladığımız gibi), sadece git pull yazmanız yeterlidir:

git pull

Bu komut, uzak depodaki main dalındaki tüm yeni commit'leri alır ve bunları yerel main dalınızla birleştirir.

Fetch ve Merge Farkı (git fetch, git merge)

git pull, aslında git fetch ve git merge komutlarının birleşimidir.

  • git fetch origin main: Uzak depodaki main dalındaki tüm yeni değişiklikleri indirir, ancak bunları yerel dalınızla otomatik olarak birleştirmez. Bu değişiklikler yerel deponuzda "origin/main" gibi bir uzak izleme dalında saklanır. Bu, değişiklikleri incelemek ve daha sonra manuel olarak birleştirmek istediğinizde kullanışlıdır.
  • git merge origin/main: İndirilen uzak izleme dalındaki değişiklikleri (bu örnekte origin/main) mevcut yerel dalınızla birleştirir.

Genellikle, hızlı bir şekilde güncel kalmak için git pull kullanmak yeterlidir. Ancak, değişiklikleri birleştirmeden önce incelemek isterseniz git fetch ve ardından git merge adımlarını ayrı ayrı kullanabilirsiniz.

7. Brançlar (Dallar) ile Çalışma

Brançlar, bir projenin ana geliştirme hattından ayrılıp bağımsız bir şekilde çalışmaya devam etmenizi sağlayan güçlü bir Git özelliğidir. Bu, yeni özellikler geliştirmek veya hataları düzeltmek için ana kodu etkilemeden güvenli bir alan yaratır.

Branç Nedir ve Neden Kullanılır?

Bir branç, projenizin mevcut durumunun bir kopyası gibidir. Genellikle, ana geliştirme hattı (main veya master) kararlı kod içerirken, yeni özellikler veya hata düzeltmeleri için ayrı brançlar oluşturulur. Bu sayede, ana kod bozulmadan yeni geliştirmeler yapılabilir ve test edilebilir. İşlem tamamlandığında, bu branç ana dala geri birleştirilir.

Yeni Branç Oluşturma ve Geçiş (git branch, git checkout)

Yeni bir branç oluşturmak için git branch komutunu kullanırız:

git branch yeni-ozellik

Mevcut brançları görmek için:

git branch

Oluşturduğunuz brança geçiş yapmak için git checkout komutunu kullanırız:

git checkout yeni-ozellik

Hem branç oluşturup hem de ona geçiş yapmak için kısa yol:

git checkout -b yeni-ozellik

Brançları Birleştirme (git merge)

Bir branç üzerinde çalışmayı bitirdikten ve değişikliklerinizi commit ettikten sonra, bu brançtaki değişiklikleri ana dala (veya başka bir dala) geri birleştirmek istersiniz. Öncelikle, birleştirmek istediğiniz ana dala geçiş yapın:

git checkout main

Ardından, yeni-ozellik brancını main dalına birleştirin:

git merge yeni-ozellik

Eğer birleştirme sırasında çakışmalar (conflict) olursa, Git size hangi dosyaların çakıştığını bildirir. Bu dosyaları manuel olarak düzenleyip çakışmaları çözmeniz ve ardından değişiklikleri commit etmeniz gerekir.

Birleştirme işlemi tamamlandıktan sonra, artık ihtiyacınız olmayan brancı silebilirsiniz:

git branch -d yeni-ozellik

Sonuç

Git Bash ve GitHub, modern yazılım geliştirmenin temel taşlarıdır. Bu rehberde öğrendiğiniz git init, add, commit, push, pull ve branch gibi temel komutlar, versiyon kontrol dünyasına sağlam bir başlangıç yapmanızı sağlayacaktır. Unutmayın, Git ve GitHub'ı etkili bir şekilde kullanmanın anahtarı pratik yapmaktır. Kendi küçük projelerinizi oluşturarak, değişiklikler yaparak, push ve pull işlemleri gerçekleştirerek bu araçlara hakim olabilirsiniz. Bu beceriler, hem kişisel projelerinizde düzeni sağlamanıza hem de ekip içinde daha verimli çalışmanıza olanak tanıyacaktır. Başarılar dileriz!

SSS (Sık Sorulan Sorular)

Git ve GitHub arasındaki fark nedir?

Git, yerel bilgisayarınızda çalışan bir versiyon kontrol sistemidir. Dosyalarınızın geçmişini takip etmenizi, değişiklikleri kaydetmenizi ve farklı versiyonlar arasında geçiş yapmanızı sağlar. GitHub ise Git depolarınızı barındırmak için kullanılan bulut tabanlı bir platformdur. Projelerinizi çevrimiçi olarak saklamanıza, başkalarıyla işbirliği yapmanıza ve açık kaynak projelerde yer almanıza olanak tanır.

Git'i GitHub olmadan kullanabilir miyim?

Evet, Git tamamen yerel olarak çalışabilen bir araçtır. GitHub gibi bir uzak depoya ihtiyaç duymadan da projelerinizin versiyon kontrolünü sağlayabilirsiniz. Ancak GitHub, projelerinizi yedeklemek, ekip üyeleriyle işbirliği yapmak ve projelerinizi dünyaya açmak için büyük avantajlar sunar.

Yanlış bir commit yaparsam ne olur? Geri alabilir miyim?

Evet, Git'in en güçlü özelliklerinden biri, yapılan hataları geri alabilme yeteneğidir. git reset veya git revert gibi komutlarla commit'leri geri alabilir veya değiştirebilirsiniz. Ancak bu komutları dikkatli kullanmak gerekir, özellikle de uzak depoya push edilmiş commit'ler üzerinde çalışırken.

Pull request (PR) nedir?

Pull request (veya Merge Request), GitHub gibi platformlarda bir geliştiricinin kendi brancında yaptığı değişiklikleri ana depoya birleştirmek için yaptığı bir istektir. Bu, değişikliklerin ana depoya eklenmeden önce diğer ekip üyeleri tarafından incelenmesini, yorum yapılmasını ve onaylanmasını sağlar. Bu, ekip içinde kod kalitesini ve işbirliğini artıran önemli bir süreçtir.

Git'te "conflict" (çakışma) ne anlama gelir? Nasıl çözülür?

Bir "conflict", iki farklı geliştiricinin aynı dosyanın aynı satırlarında değişiklik yapması ve bu değişikliklerin Git tarafından otomatik olarak birleştirilememesi durumunda ortaya çıkar. Git, çakışan bölgeleri özel işaretleyicilerle gösterir. Çakışmayı çözmek için, bu işaretleyicileri içeren dosyaları manuel olarak düzenlemeniz, hangi değişikliklerin kalacağına karar vermeniz ve ardından dosyaları tekrar commit etmeniz gerekir.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.