, ,

DevOps Dünyasına Giriş: Git


Yazılım dünyasına yeni adım atanlar! Bugün sizlerle yazılımcıların en yakın dostu Git aracını konuşacağız.

Git Nedir ?

Düşünün ki bir zaman makineniz var. Yazdığınız kodda bir şeyler ters gitti ve “keşke dün yazdığım versiyona geri dönebilsem” diyorsunuz. İşte Git tam olarak bunu yapmanızı sağlıyor! Git, kodunuzun her değişikliğini kaydeden bir sürüm kontrol sistemi. Yani projenizdeki her değişikliği kayıt altına alıp, istediğiniz zaman o ana geri dönebilmenizi sağlıyor. Bir nevi kodunuzun dijital hafızası gibi düşünebilirsiniz.

GitHub Nedir ?

GitHub, Git versiyon kontrol sistemini temel alan, bulut tabanlı bir kod barındırma ve işbirliği platformudur. Bu platform, geliştiricilere aşağıdaki temel özellikleri sunar:

  • Merkezi kod depolama ve versiyon kontrolü
  • İşbirliği ve kod inceleme süreçleri için araçlar
  • Entegre proje yönetimi özellikleri
  • Otomatik CI/CD süreçleri için altyapı

Git ve GitHub Arasındaki Temel Farklar

Git ve GitHub, birbirini tamamlayan ancak farklı amaçlara hizmet eden araçlardır:

Git, yerel sistemde çalışan ve versiyon kontrol işlemlerini gerçekleştiren bir yazılımdır. Temel işlevi, kod değişikliklerini izlemek ve yönetmektir.

GitHub ise Git’in sunduğu özellikleri bulut ortamında kullanılabilir hale getiren bir platformdur. Ekip işbirliğini kolaylaştırır ve proje yönetimi için ek araçlar sağlar.

Her iki sistem de modern yazılım geliştirme süreçlerinin vazgeçilmez bileşenleridir ve açık kaynak projelerden kurumsal uygulamalara kadar geniş bir yelpazede kullanılmaktadır.

Linux Sisteme Git Kurulumu

Linux sistemlerde Git’i yüklemek için aşağıdaki komutları kullanabilirsiniz:

Debian/Ubuntu için:

sudo apt update
sudo apt install git

CentOS/RHEL için:

sudo dnf install git

Temel Komutlar

  • git init: Bu komut ile repository oluşturmanın iki yolu var. Aşağıdaki şekilde çalıştırıldığı dizini bir repository’ye dönüştürecektir.
  • git config:  Kullanıcı adı ve mail gibi başlıca ayarları yapılandırmamızı sağlar.
  • git status: Yapılan değişikliklerin durumunu gösterir.
  • git add: Yapılan değişiklikleri daha sonra kaydedilmek üzere ‘takip listesi’ olarak adlandırabileceğimiz ‘staging area’ya ekler.
  • git reset: Yaptığımız değişiklikleri geri almamızı sağlar.
  • git commit: ‘Takip listesi’ne alınan değişikliği local repository’ye kaydeder (commitler).
  • git log: Projedeki commit’leri listeler.
  • git push: Commit edilmiş değişikliklerin uzak sunucuya aktarılmasını sağlar.
  • git pull: Master branch’ten projenin en güncel halini almamızı sağlar.
  • git branch: Mevcut repository’deki branchleri listeler.
  • git clone: Uzak sunucudaki bir projeyi tüm branch’leri ve dosyalarıyla yerel bilgisayarımıza kopyalar.

Git Kullanıcı Bilgilerini Yapılandırma

Git’i ilk kez kullanırken, adınızı ve e-posta adresinizi yapılandırmanız gerekir:

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

Yapılandırmaları görmek için:

git config --list

İlk Git Deposu (Repository) Oluşturma

Git deposu oluşturmak için aşağıdaki adımları takip edebilirsiniz:

mkdir ilk_git_projesi
cd ilk_git_projesi
git init

Bu komutlar, proje klasörünü oluşturur ve Git deposu başlatır.

Git Takibi ve Git Logları

Git ile bir dosyanın durumunu kontrol etmek için:

git status

Bir dosyayı takibe almak için:

git add dosya.txt

Değişiklikleri işlemek için (commit):

git commit -m "İlk commit"

Logları görüntülemek için:

git log

GitHub ile Git Kullanımı

GitHub’da Uzaktan Repo Oluşturma

GitHub’da yeni bir repository oluşturduktan sonra, yerel repo ile bağlamak için:

git remote add origin https://github.com/kullaniciadi/repo_adi.git
git branch -M main
git push -u origin main

Yerel ve GitHub İçin Kimlik Doğrulama Ayarlama

GitHub’da SSH anahtarını kullanarak kimlik doğrulaması yapmak için:

ssh-keygen -t rsa -b 4096 -C "email@example.com"
cat ~/.ssh/id_rsa.pub

Bu anahtarı GitHub hesabınıza ekleyin.

Git’te Branch (Dal) Oluşturma

Yeni bir dal oluşturmak için:

git branch yeni_branch

Dal değiştirmek için:

git checkout yeni_branch

veya

git switch yeni_branch

Branch’leri Birleştirme (Merge İşlemi)

Branch’leri birleştirmek için önce ana branch’e geçiş yapın:

git checkout main

Ardından merge işlemi:

git merge yeni_branch

Git’te Önceki Duruma Geri Dönme

Son commit’i geri almak için:

git reset --soft HEAD~1

Belirli bir commit’e dönmek için:

git checkout <commit_id>

Çalışma Dizini ve Sahneleme Alanını Karşılaştırma

Mevcut değişiklikleri görmek için:

git diff

Sahneleme alanındaki değişiklikleri görmek için:

git diff --staged

Commit’leri Karşılaştırma

İki commit arasındaki farkları görmek için:

git diff commit1 commit2

Branch (Dal) Kavramı

Branch, projede farklı özellikler eklemek veya geliştirmeler yapmak için kullanılan paralel çalışma ortamlarıdır. Git’in en büyük avantajlarından biri branch yapısıdır.

Git Stash Kullanımı

Stash Nedir?

Git stash, üzerinde çalıştığınız ancak henüz commit etmeye hazır olmadığınız değişiklikleri geçici olarak kaydetmenizi sağlayan güçlü bir Git komutudur. Bu özellik, özellikle acil bir hata düzeltmesi gerektiğinde veya farklı bir branch’e geçmeniz gerektiğinde çok kullanışlıdır.

Temel Stash Komutları

# Mevcut değişiklikleri stash'e kaydetme
git stash save "değişiklik açıklaması"
# veya basitçe
git stash

# Stash listesini görüntüleme
git stash list

# Son stash'i geri yükleme ve listeden silme
git stash pop

# Son stash'i geri yükleme ama listede tutma
git stash apply

# Belirli bir stash'i geri yükleme
git stash apply stash@{2}

# Belirli bir stash'i silme
git stash drop stash@{0}

# Tüm stash'leri silme
git stash clear

Stash Kullanım Senaryoları





  • Acil Durum Değişiklikleri
# Mevcut değişiklikleri kaydet
git stash
# Hotfix branch'ine geç
git checkout hotfix
# Düzeltmeleri yap ve commit et
git commit -am "kritik hata düzeltmesi"
# Ana branch'e geri dön
git checkout main
# Önceki değişiklikleri geri al
git stash pop
  • Branch Değişimi
# Yanlış branch'te çalışıyorsanız
git stash
git checkout doğru-branch
git stash pop
  • Kısmi Stash
# Sadece belirli dosyaları stash'e alma
git stash push -m "belirli dosyalar" dosya1.js dosya2.css

İleri Düzey Stash Özellikleri

  • Stash Include Untracked
# Takip edilmeyen dosyaları da stash'e dahil etme
git stash -u
  • Interaktif Stash
# Değişikliklerin bir kısmını seçerek stash'leme
git stash -p
  • Stash Branch
# Stash'ten yeni bir branch oluşturma
git stash branch yeni-branch-adı stash@{0}

En İyi Uygulamalar

  1. Her stash için açıklayıcı bir mesaj kullanın
  2. Uzun süre stash’te değişiklik tutmaktan kaçının
  3. Düzenli olarak stash listesini temizleyin
  4. Karmaşık değişiklikler için branch kullanmayı tercih edin

Yaygın Hatalar ve Çözümleri

  • Stash Çakışmaları
# Çakışma durumunda
git stash show -p stash@{0} > değişiklikler.patch
git stash drop stash@{0}
# Patch'i manuel olarak uygulayın
  • Yanlışlıkla Stash Drop
# Son silinen stash'i kurtarma
git fsck --no-reflog | grep commit | cut -d' ' -f3 | xargs git show

Sonuç

Git, modern yazılım geliştirmenin temel yapı taşlarından biri olarak endüstri standardı haline gelmiştir. Bu güçlü versiyon kontrol sistemi, yazılım projelerinin her aşamasında kritik bir rol oynar:

  • Dağıtık mimarisi sayesinde ekip üyelerinin eşzamanlı çalışmasını mümkün kılar
  • Kod değişikliklerinin güvenli ve izlenebilir şekilde yönetilmesini sağlar
  • Branch yapısı ile paralel geliştirme süreçlerini destekler
  • Merge ve rebase özellikleriyle kod entegrasyonunu kolaylaştırır
  • CI/CD pipeline’larının temelini oluşturur

Günümüzde, mikroservis mimarileri, DevOps pratikleri ve çevik metodolojiler gibi modern yazılım geliştirme yaklaşımlarının tümü Git’in sağladığı altyapı üzerine inşa edilmiştir. Bu nedenle, Git’in etkin kullanımı, yazılım projelerinin başarısında kritik bir faktördür.

Git’in sunduğu bu kapsamlı özellikler ve araçlar, yazılım geliştirme süreçlerini daha verimli, güvenli ve ölçeklenebilir hale getirirken, ekiplerin daha hızlı ve kaliteli kod üretmesine olanak tanır.


Leave a Reply

Your email address will not be published. Required fields are marked *

Related Posts