WhatsApp

Git Kullanımı

Git, versiyon kontrol sistemi olarak kodlarımızı takip etmemizi sağlar. Bu sistemin mantığını anlamak için dört temel alan ve dosya durumlarını anlamak gerekiyor:

1. Working Directory (Çalışma Dizini)

Bu, bilgisayarındaki proje klasörüdür. Kodları burada düzenlersin. Yeni dosya eklersin, var olanı değiştirirsin.

2. Staging Area (Hazırlık Alanı)

Değişiklik yaptığın dosyaları commit’lemek için önce staging area’ya alman gerekir. Bu alan, “Bu dosyaları bir sonraki commit’e ekleyeceğim” dediğin yer.

3. Local Repository (Yerel Depo)

git commit komutu ile staging area’daki değişiklikler local repository’ye kaydedilir. Bu senin bilgisayarında tutulan Git geçmişidir.

4. Remote Repository (Uzak Depo)

Bu, GitHub, GitLab gibi uzak sunucularda bulunan projendir. git push komutu ile local repository’deki commit’leri bu uzak sunucuya gönderirsin. Diğer kullanıcılarla senkronizasyon burada olur.

Dosya Durumları (File Status)

Git, her dosyanın hangi aşamada olduğunu takip eder:

DurumAçıklama
UntrackedGit’in henüz takip etmediği dosya. Yeni oluşturulmuş olabilir.
UnmodifiedGit tarafından takip ediliyor ve üzerinde değişiklik yapılmamış.
ModifiedTakip edilen dosyada değişiklik yapılmış ama staging’e alınmamış.
StagedDeğişiklik staging area’ya alınmış ve commit için hazır.

Branch (Dal)

Branch, projenin ayrı bir kopyasıdır. Ana dal genelde main veya master olur. Yeni bir özellik üzerinde çalışmak için feature-x gibi yeni bir branch açarsın. Böylece ana dal etkilenmez.

git checkout -b feature-login

Fork

Fork, başka birinin projesinin bir kopyasını kendi GitHub hesabına almaktır. Genelde açık kaynak projelerde kullanılır. Projeyi geliştirip Pull Request (PR) ile katkıda bulunursun.

HEAD

Şu anda hangi commit veya branch üzerinde çalıştığını gösterir.

Git Komutları

Git komutları aşağıdaki gibi gruplandırılabilir.

Genel Konfigürasyon Komutları

KomutAçıklama
git config –global user.name “birkanoruc”Global kullanıcı adını yapılandırır.
git config –global user.nameGlobal kullanıcı adını görüntüler.
git config –global user.email “[email protected]Global e-posta adresini yapılandırır.
git config –global user.emailGlobal e-posta adresini görüntüler.
git config –listTüm Git ayarlarını listeler.

Repo Oluşturma ve Klonlama

KomutAçıklama
git initYeni bir Git reposu başlatır (bulunduğun dizinde .git klasörü oluşturur).
git clone <url>Mevcut uzak repo’yu kopyalar (klonlar).

Remote (Uzak Depo) İşlemleri

KomutAçıklama
git remote add origin <url>Uzak repo adresi ekler.
git remote -vUzak repo adreslerini listeler.
git remote remove originUzak repo bağlantısını kaldırır.


Dosya Takibi ve Durum Kontrolü

KomutAçıklama
git statusÇalışma alanındaki dosyaların durumunu gösterir.
git add <dosya>Belirtilen dosyayı sahneye (staging area) ekler.
git add .Tüm değişiklikleri sahneye ekler.
git restore <dosya>Değişiklikleri geri alır (unmodified hâle getirir).
git restore –staged <dosya>Dosyayı sahneden (staged alanından) çalışma alanına çeker.
git resetTüm dosyaları sahneden kaldırır, çalışma alanı bozulmaz.


Commit İşlemleri

KomutAçıklama
git commit -m “mesaj”Staged dosyaları commit eder.
git showSon commit’in detaylarını gösterir.
git logTüm commit geçmişini gösterir.
git log -p -2Son 2 commit’in farklarını detaylı olarak gösterir.
git log –since=10minutesSon 10 dakikadaki commit’leri listeler.
git log –author=”Ad”Belirtilen kullanıcıya ait commit’leri gösterir.
git log –pretty=onelineHer commit’i tek satır olarak gösterir.
git log –pretty=shortKısa formatta commit bilgilerini listeler.
git log –pretty=mediumMedium formatta commit bilgilerini listeler.
git log –name-statusCommit ile değişen dosyaları da listeler.
git log –name-status –pretty=onelineTek satır formatta, dosya değişiklikleriyle birlikte gösterir.


Branch (Dal) İşlemleri

KomutAçıklama
git branchTüm branch’leri listeler.
git branch <branch>Yeni bir branch oluşturur.
git branch -d <branch>Merge edilmiş branch’i siler.
git branch -D <branch>Merge edilmemiş branch’i zorla siler.
git checkout <branch>Belirtilen branch’e geçiş yapar.
git checkout -b <yeni_branch>Yeni branch oluşturur ve geçiş yapar.
git checkout <commit-id>Belirli bir commit’e geçiş yapar (detached HEAD durumu).
git merge <branch>Belirtilen branch’i mevcut branch ile birleştirir.


Uzak Repo’dan Güncelleme

KomutAçıklama
git fetch origin <branch>Uzak repo’daki branch’i yerel repo’ya çeker ama merge yapmaz.
git pull origin <branch>Uzak repo’daki branch’i çeker ve çalışma dizinine uygular (fetch + merge).
git push origin <branch>Yerel branch’i uzak repo’ya gönderir.


Geri Alma ve İptal

KomutAçıklama
git reset –soft <commit-id>Commit’leri siler, değişiklikleri korur.
git reset –mixed <commit-id>Commit’leri siler, değişiklikleri sahneden de çıkarır.
git reset –hard <commit-id>Commit’leri ve tüm değişiklikleri tamamen siler.
git reset –soft HEAD~1Son commit’i siler, değişiklikleri korur.
git revert <commit-id>Belirtilen commit’in tam tersi bir commit üretir.


Değişiklikleri Görüntüleme

KomutAçıklama
git diffÇalışma dizinindeki değişiklikleri gösterir.
git diff –cachedStage edilmiş değişiklikleri gösterir.


İstatistik ve Özetler

KomutAçıklama
git shortlog -sKullanıcıların commit sayılarını listeler.
git shortlog -eKullanıcıların e-posta bilgileriyle commit sayılarını listeler.
git shortlog -nCommit sayılarına göre kullanıcıları sıralar.
Posted in Yazılım Dünyasında Genel Bakış
Write a comment