29 Mayıs 2022 • 45 dakikalık okuma
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 kurulu değil ise, kurulum adımları için tıklayınız.
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 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 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;
git init
.git adlı dizin mevcut ise git sürüm kontrolü başlatılmıştır.
Git yerel repository'de sürüm izlemeyi sonlandırır; .git dizinini siler;
rm -rf .git
git status komutu, dizin içinde yapılan değişiklikleri gösterir;
git status
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;
git add default.html
git add dosya1 dosya2 komutu, yazılan dosyaları önbelleğe (staging area) alır;
git add default.html contact.html
git add . komutu, tüm dosyaları önbelleğe (staging area) alır;
git add .
git add *.js komutu, sadece .js uzantılı dosyaları önbelleğe (staging area) alır;
git add *.js
git rm --cached dosya komutu, adı yazılan dosyayı önbellekten (staging area) geri alır, unstaged yapar;
git rm --cached default.html
git commit -m "açıklama" komutu, kayıt noktası (commit) oluşturur;
git commit -m "default.html eklendi."
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;
git commit -m "default.html düzenlendi."
git commit --amend -m "açıklama" komutu, son commit açıklamasını günceller;
git commit --amend -m "default.html düzenlendi. Sayfaya resim eklendi."
git log komutu, yapılan tüm commit'lerin tarihçesini gösterir;
git log
git log -p komutu, commit edilmiş dosyaların içeriğindeki farkları gösterir;
git log -p
git diff komutu, unstaged (izlenip değişiklik yapılan) dosyalardaki farklı satırları gösterir;
git diff
git diff dosya komutu, sadece yazılan dosya içeriğindeki farklı satırları gösterir;
git diff default.html
git diff --staged komutu, commit edilecek dosyalardaki değişiklikleri gösterir;
git diff --staged
git diff --staged dosya komutu, commit edilecek dosyalardan sadece yazılan dosya içeriğindeki değişiklikleri gösterir;
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;
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;
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;
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;
git diff 87fec74603deb7617e82e79185b16f676bd95eaf 856ecfd3b6c7fa40306fc038a7602a3683a7a73a
git restore file komutu, dizinde yapılan (unstaged) değişiklikleri geri alır.
git restore default.html
git restore --staged file komutu, önbellek (staged) yapılan dosyaları geri (unstaged) alır.
git restore --staged default.html
git branch isim komutu, yeni bir dal (branch) oluşturur;
git branch development
git branch komutu, mevcut branchleri listeler;
git branch
git branch -m isim komutu, branch adını değiştirir;
git branch -m development-2022
git branch -d isim komutu, branch siler;
git branch -d change-background-color
git branch -dr isim komutu, uzak sunucudaki branch'i siler;
git branch -dr change-background-color
git checkout -b isim komutu, yeni bir branch oluşturur ve oluşturulan yeni branche geçer;
git checkout -b change-background-color
git checkout isim komutu, adı yazılan branch'e geçer;
git checkout development
git checkout hash komutu, hash'i girilen commit'e geri döner;
git checkout 856ecfd3b6c7fa40306fc038a7602a3683a7a73a
git merge isim komutu, branch'leri birleştirir;
git merge change-backgorund-color
git merge isim isim komutu, branch'leri birleştirir;
git merge change-background-color main
git clone url komutu, uzak sunucudaki repository'i yerel dizine indirir;
git clone https://gitlab.com/melihsafran/websitem.git
git remote -v komutu, repository'deki uzak sunucu bağlantılarını gösterir;
git remote -v
git remote add komutu, repository'e uzak sunucu bağlantısı ekler;
git remote add origin https://gitlab.com/melihsafran/websitem.git
yada
git remote add origin git@gitlab.com:melihsafran/websitem.git
git remote set-url komutu, repository'de uzak sunucu bağlantısı günceller;
git remote set-url origin https://gitlab.com/melihsafran/websitem.git
yada
git remote set-url origin git@gitlab.com:melihsafran/websitem.git
git push komutu, repository'i uzak sunucudaki branche gönderir;
git push origin main
git push origin development
git push origin --delete isim komutu, uzak sunucudaki girilen branch'i siler;
git push origin --delete change-background-color
git pull komutu, uzak sunucudaki branch'i çalışma dizinine indirir ve yerel repository ile birleştirir;
git pull origin main
git fetch komutu, uzak sunucudaki branch'i çalışma dizinine indirir ve yerel repository ile birleştirmez;
git fetch origin main
git reset --hard HEAD~1 komutu, branch'teki en son commit'i siler;
git reset --hard HEAD~1
git reset --hard HEAD~5 komutu, branch'teki en son 5 commit'i siler;
git reset --hard HEAD~5
git reset --hard hash komutu, branch'teki hash'i girilen commit'i siler;
git reset --hard 856ecfd3b6c7fa40306fc038a7602a3683a7a73a
git stash komutu, commit edilmek istenmeyen bitmemiş değişiklikleri geçici olarak kaydeder;
git stash
git stash list komutu, stash alanında geçici olarak kaydedilmiş değişiklikleri listeler;
git stash list
git stash apply stash@{0} komutu, stash alanında kaydedilen değişikliği geri alır. Stash listesinden silmez;
git stash apply stash@{0}
git stash pop komutu, stash alanında kaydedilen değişikliği geri alır. Stash listesinden siler;
git stash pop
git stash drop stash@{0} komutu, stash alanında kaydedilen değişikliği geri almadan stash listesinden siler;
git stash drop stash@{0}
git-ignore dosya komutu, dizinde izlenmesi istenmeyen dosyaları belirtir;
git-ignore todo.txt
git-ignore todo/* komutu, dizinde izlenmesi istenmeyen dizinleri belirtir;
LANG=C komutu, geçici olarak varsayılan sistem dilini iptal eder; Git komut çıktıları Türkçe ise ingilizce diline çevirir;
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;
LANG=tr_TR.UTF-8