Git, ücretsiz, açık kaynak kodlu ve dağıtık bir sürüm kontrol sistemidir. Yazılım geliştirme projelerinin çoğunda takım halinde ortak çalışmayı kolaylaştırmak için git, varsayılan sürüm kontrol yazılımı olarak kullanılmaktadır.

Git logo
Resim 1. Git logo

Git Kurulumu

Git kurulu değil ise, kurulum adımları için tıklayınız.

Git Dosya Durumları

Git sürüm kontrol sisteminde, yerel diskteki çalışılan dizine, working directory/repository denir. Çalışılan dizin içindeki dosyalar git tarafından dört kategoride değerlendirilir;

1. İzlenmeyen –Untracked– Dosyalar

Git'in değişikliklerini izlemediği dosyalar.

2. İzlenen ve Kaydedilecek –Staged– Dosyalar

Git'in değişikliklerini izlediği ve sonraki sürüm için kaydedilip yedekleyeceği dosyalar.

3. İzlenen ve Kaydedilmeyecek –Unstaged– Dosyalar

Git'in değişikliklerini izlediği ama sonraki sürüm için kaydetmeyeceği dosyalar.

4. Yedekleme için Kaydedilmiş –Commited– Dosyalar

Git'in kaydedip yedeklediği dosyalar.

Çalışılan dizinde yapılan dosya ekleme, silme, değiştirme gibi her değişiklik git tarafından takip edilir. Yedeklenmesi istenmeyen dosyalar untracked olarak adlandırılır. Yedeklenmesi istenen dosyalar önce stage denilen ara bir alana alınır ve buradaki dosyalara staged dosya denir. Yedeklenmesi istenen ama stage alanında olmayan dosyalar unstaged kategorisindedir ve yedekleme için dikkate alınmazlar. Yedekleme için kaydedilmiş dosyalar ise commited olarak adlandırılır.

Git Komutları

Git sürüm kontrol sistemi, komut satırı ve grafik arabirim olmak üzere iki farklı şekilde kullanılabilir. Grafik arabirim ile git kullanımı uygulamaya göre değişiklik gösterir ve kolaylık sağlar. Komut satırı kullanımı ise grafik arabirime göre kullanımı daha zor fakat kullanıcıya tüm komutlara erişebilmesi nedeniyle git sisteminin tüm özelliklerin kullanılabilmesini sağlar.

git init

git init komutu, dizinde sürüm izlemeyi başlatır; .git dizinini oluşturur.

Sürüm kontrolü altında olmayan bir dizini git ile sürüm kontrolü altına almak için komut satırı ile dizin açılır;

Kod

git init

git init komutu
Resim 2. git init komutu

.git adlı dizin mevcut ise git sürüm kontrolü başlatılmıştır.

git init komutu ile sürüm kontrolü başlatılması
Resim 3. git init komutu ile sürüm kontrolü başlatılması

Git yerel repository'de sürüm izlemeyi sonlandırır; .git dizinini siler;

Kod

rm -rf .git

git status

git status komutu, dizin içinde yapılan değişiklikleri gösterir;

Kod

git status

git status komutu ile dizindeki değişikliklerin gösterilmesi
Resim 4. git status komutu ile dizindeki değişikliklerin gösterilmesi

git add

git add dosya komutu, sürüm kayıt noktası (commit) oluşturmak için izlenmeyen (untracked) adı yazılan dosyayı önbelleğe (staging area) alır;

Kod

git add default.html

git add komutu ile izlenmeyen dosyaların önbellek alanına alınması
Resim 5. git add komutu ile izlenmeyen dosyaların önbellek alanına alınması

git add dosya1 dosya2 komutu, yazılan dosyaları önbelleğe (staging area) alır;

Kod

git add default.html contact.html

 

git add . komutu, tüm dosyaları önbelleğe (staging area) alır;

Kod

git add .

 

git add *.js komutu, sadece .js uzantılı dosyaları önbelleğe (staging area) alır;

Kod

git add *.js

git rm --cached

git rm --cached dosya komutu, adı yazılan dosyayı önbellekten (staging area) geri alır, unstaged yapar;

Kod

git rm --cached default.html

git rm --cached komutu ile önbellekteki dosyanın geri alınması
Resim 6. git rm --cached komutu ile önbellekteki dosyanın geri alınması

git commit

git commit -m "açıklama" komutu, kayıt noktası (commit) oluşturur;

Kod

git commit -m "default.html eklendi."

git commit ile önbellekteki dosyaların kaydedilmesi
Resim 7. git commit ile önbellekteki dosyaların kaydedilmesi

 

git commit -a -m "açıklama" komutu, izlenen (tracked) tüm dosyalarda değişiklik var ise staging alanına (önbelleğe) almadan commit oluşturur;

Kod

git commit -m "default.html düzenlendi."

 

git commit --amend -m "açıklama" komutu, son commit açıklamasını günceller;

Kod

git commit --amend -m "default.html düzenlendi. Sayfaya resim eklendi."

git log

git log komutu, yapılan tüm commit'lerin tarihçesini gösterir;

Kod

git log

git log ile commitlerin listelenmesi
Resim 8. git log ile commitlerin listelenmesi

 

git log -p komutu, commit edilmiş dosyaların içeriğindeki farkları gösterir;

Kod

git log -p

git diff

git diff komutu, unstaged (izlenip değişiklik yapılan) dosyalardaki farklı satırları gösterir;

Kod

git diff

git diff ile dosya içeriğindeki farklı satırların gösterilmesi
Resim 9. git diff ile dosya içeriğindeki farklı satırların gösterilmesi

git diff dosya komutu, sadece yazılan dosya içeriğindeki farklı satırları gösterir;

Kod

git diff default.html

 

git diff --staged komutu, commit edilecek dosyalardaki değişiklikleri gösterir;

Kod

git diff --staged

 

git diff --staged dosya komutu, commit edilecek dosyalardan sadece yazılan dosya içeriğindeki değişiklikleri gösterir;

Kod

git diff --staged default.html

 

git diff HEAD komutu, çalışılan dizin ve repositorydeki son commit karşılaştırıp dosya içeriklerindeki farkları gösterir;

Kod

git diff HEAD

 

git diff --staged HEAD komutu, önbellek (staged) ve repositorydeki son commit karşılaştırıp dosya içeriklerindeki farkları gösterir;

Kod

git diff --staged HEAD

 

git diff hash hash komutu, yazılan commit hash'ine göre iki commiti karşılaştırıp dosya içeriklerindeki farkları gösterir;

Kod

git diff 87fec74603deb7617e82e79185b16f676bd95eaf 856ecfd3b6c7fa40306fc038a7602a3683a7a73a

 

git diff isim isim komutu, yazılan branch adına göre iki branchi karşılaştırıp dosya içeriklerindeki farkları gösterir;

Kod

git diff 87fec74603deb7617e82e79185b16f676bd95eaf 856ecfd3b6c7fa40306fc038a7602a3683a7a73a

git restore

git restore file komutu, dizinde yapılan (unstaged) değişiklikleri geri alır.

Kod

git restore default.html

 

git restore --staged file komutu, önbellek (staged) yapılan dosyaları geri (unstaged) alır.

Kod

git restore --staged default.html

git branch

git branch isim komutu, yeni bir dal (branch) oluşturur;

Kod

git branch development

git branch ile development isimli branch oluşturma
Resim 10. git branch ile development isimli branch oluşturma

git branch komutu, mevcut branchleri listeler;

Kod

git branch

git branch mevcut branchleri listenmesi
Resim 11. git branch mevcut branchleri listenmesi

git branch -m isim komutu, branch adını değiştirir;

Kod

git branch -m development-2022

 

git branch -d isim komutu, branch siler;

Kod

git branch -d change-background-color

git branch -dr isim komutu, uzak sunucudaki branch'i siler;

Kod

git branch -dr change-background-color

git checkout

git checkout -b isim komutu, yeni bir branch oluşturur ve oluşturulan yeni branche geçer;

Kod

git checkout -b change-background-color

 

git checkout isim komutu, adı yazılan branch'e geçer;

Kod

git checkout development

 

git checkout hash komutu, hash'i girilen commit'e geri döner;

Kod

git checkout 856ecfd3b6c7fa40306fc038a7602a3683a7a73a

git merge

git merge isim komutu, branch'leri birleştirir;

Kod

git merge change-backgorund-color

 

git merge isim isim komutu, branch'leri birleştirir;

Kod

git merge change-background-color main

git clone

git clone url komutu, uzak sunucudaki repository'i yerel dizine indirir;

Kod

git clone https://gitlab.com/melihsafran/websitem.git

git remote

git remote -v komutu, repository'deki uzak sunucu bağlantılarını gösterir;

Kod

git remote -v

 

git remote add komutu, repository'e uzak sunucu bağlantısı ekler;

Kod

git remote add origin https://gitlab.com/melihsafran/websitem.git

 

yada

Kod

git remote add origin git@gitlab.com:melihsafran/websitem.git

 

git remote set-url komutu, repository'de uzak sunucu bağlantısı günceller;

Kod

git remote set-url origin https://gitlab.com/melihsafran/websitem.git

 

yada

Kod

git remote set-url origin git@gitlab.com:melihsafran/websitem.git

git push

git push komutu, repository'i uzak sunucudaki branche gönderir;

Kod

git push origin main

Kod

git push origin development

 

git push origin --delete isim komutu, uzak sunucudaki girilen branch'i siler;

Kod

git push origin --delete change-background-color

git pull

git pull komutu, uzak sunucudaki branch'i çalışma dizinine indirir ve yerel repository ile birleştirir;

Kod

git pull origin main

git fetch

git fetch komutu, uzak sunucudaki branch'i çalışma dizinine indirir ve yerel repository ile birleştirmez;

Kod

git fetch origin main

git reset

git reset --hard HEAD~1 komutu, branch'teki en son commit'i siler;

Kod

git reset --hard HEAD~1

 

git reset --hard HEAD~5 komutu, branch'teki en son 5 commit'i siler;

Kod

git reset --hard HEAD~5

 

git reset --hard hash komutu, branch'teki hash'i girilen commit'i siler;

Kod

git reset --hard 856ecfd3b6c7fa40306fc038a7602a3683a7a73a

git stash

git stash komutu, commit edilmek istenmeyen bitmemiş değişiklikleri geçici olarak kaydeder;

Kod

git stash

 

git stash list komutu, stash alanında geçici olarak kaydedilmiş değişiklikleri listeler;

Kod

git stash list

 

git stash apply stash@{0} komutu, stash alanında kaydedilen değişikliği geri alır. Stash listesinden silmez;

Kod

git stash apply stash@{0}

 

git stash pop komutu, stash alanında kaydedilen değişikliği geri alır. Stash listesinden siler;

Kod

git stash pop

 

git stash drop stash@{0} komutu, stash alanında kaydedilen değişikliği geri almadan stash listesinden siler;

Kod

git stash drop stash@{0}

git-ignore

git-ignore dosya komutu, dizinde izlenmesi istenmeyen dosyaları belirtir;

Kod

git-ignore todo.txt

 

git-ignore todo/* komutu, dizinde izlenmesi istenmeyen dizinleri belirtir;

LANG

LANG=C komutu, geçici olarak varsayılan sistem dilini iptal eder; Git komut çıktıları Türkçe ise ingilizce diline çevirir;

Kod

LANG=C

 

LANG=tr_TR.UTF-8 komutu, geçici olarak varsayılan sistem dilini iptal eder; Git komut çıktıları ingilizce ise Türkçe diline çevirir;

Kod

LANG=tr_TR.UTF-8

Git dil ayarları
Resim 12. Git dil ayarları

Kaynaklar

  1. Türkçe Git 101 , aliozgur.gitbooks.io, 27.05.2022 tarihinde alındı.
  2. Git & Github Tutorial for Absolute Beginners , The Codeholic, YouTube.com, 27.05.2022 tarihinde alındı.
  3. The Complete Linux Course: Beginner to Power User! , Joseph Delgadillo, YouTube.com, 27.05.2022 tarihinde alındı.
  4. Introduction to Git - Branching and Merging , David Mahler, YouTube.com, 27.05.2022 tarihinde alındı.

 


Beğen