Son günler izlediğim git kullanımı ve komutları eğitim videolarından aldığım notları bu yazı içeriğinde sunacağım.

Git Kullanımı

Git versiyon kontrolü;

git --version

Git ayarlarını görme;

git config --list

Listelenen ayarları yapılandırma;

git config --global user.name "Yunus Emre"
git config --global user.email "bilgi@mryed.com"

Sık kullanılan terminal kodları;

KodAçıklama
pwdBulunduğumuz dosya yolunu gösterir.
lsBulunduğumuz klasörün içerisindeki listeler.
cdDizine giriş komutu.
cd ..Bir geri dizine gider.
mkdir yeniklasorDizinde yeniklasor isminde dosya açılır.
KodAçıklama
touch deneme.phpdeneme.php isminde dosya oluşturulur.
vi deneme.phpDüzenleme için dosya açılır.
rm deneme.phpDosyayı siler.
rm -r yeniklasoryeniklasoru içindekilerle birlikte siler.
git init yunusemreyunusemre isminde repository oluşturulur.

Oluşturduğumuz repository içerisindeki değişiklikleri gözlemlemek için;

git status

Yerel repository içerisinde deneme.txt dosyası oluşturdum. Bu aşamada git status dediğimde dosya “Untracked files:” başlığı altında gözükür. Bunu commite hazır hale getirmek etmek için;

git add deneme.txt

Bu aşamadan sonra tekrar git status komutunu yazdığımda dosya “Changes to be committed:” başlığı altında gözükür. Dosyayı commit etmekten vazgeçti isek;

git rm --cached deneme.txt

Bu komut ile dosya station area’dan silinir ancak yerel dizinden silinmez.

Klasör içerisinde bütün dosyaları indexlemek için station area’ya taşımak istiyorsak;

git add .

Bir dosyada yapılan değişiklikleri görüntülemek için;

git diff
git-komutlari

Git Commit Komutu

Commit işlemi için;

git commit -m "ilk commit"

Commit işleminden sonra “git log” komutu ile commitler görüntülenebilir. Getirilen commit bilgilerini satır satır görüntülemek istersek;

git log --oneline

Oluşturduğumuz bir commite geri dönmek için “reset” komutunu kullanırız. Bunun farklı yolları vardır. Reset komutundan önce ikinci ve üçüncü commiti ouşturdum. Daha sonra;

git reset --soft HEAD~2

komutu ile iki commit geriye giderek birinci commite döndüm. Yereldeki dosyalarım değişmedi ancak ikinci ve üçüncü commitler silindi. Git log yazıp silindiklerini görebilirim. Aynı işlemleri;

git reset --reset HEAD~2

komutu ile yaptığımda ise iki commit geriye döndüm. Txt üzerindeki yaptığım tüm değişiklikler gitti ve ilk commit haline döndü. İkinci ve üçüncü commitlerim silindi. Eski bir commite “revert” komutu ile de dönebiliriz.

git revert [commit-id]

Git log komutu ile commitlerin id numarasını öğrenebiliriz. Daha sonra bu id no ile revert komutu yazarız. Revert komutu ile belirtilen commite gidebiliriz ve kopya commit oluşur. Ayrıca herhangi bir commit silinmez.

Not: Reset ve revert komutları daha detaylı konular.

Amend komutu ile commit üzerinde değişiklik yapılabilir.

git commit --amend

komutu ile commit düzenleme alanı açılır. “i” tuşuna basılarak düzenleme aktif hale gelir. İstenilen değişiklikler yapılır. Yapılan değişiklik sonrasında “ESC” tuşuna basılır. Daha sonra “:wq” ile düzenleme ekranından çıkılır.

Git Branch İşlemleri

Şimdiye kadar commit ettiğimiz işlemler hep master üzerinden yapıldı. Şimdi ise yeni bir branch oluşturacağız.

git branch part1

komutu ile “part1” isminde branch oluşturduk. Oluşturulan branchları listelemek için;

git branch -a

komutunu kullanırız. Bu komutta aktif olan branch yeşil renk ile gözükmektedir. Branchlar arasında geçiş yapmak için,

git checkout part1

Eğer branchı;

git checkout -b part2

komutu ile açarsak hem part2 isminde branch açmış oluruz hem de açılan branch seçilmiş olur. Açmış olduğumuz branchları silmek için;

git branch -D part2

komutunu kullanılır. Eğer part2 branchı seçili ise silme işlemi hata verecektir.

İki branchı birleştirmek için “merge” komutu kullanılır. Merge komutu ile şuan seçili olan branch ile komut sonuna yazdığımız branch birleştirilir.

git merge part2

GİTHUB VE GİTLUB

Bir repositoryimizi githuba yüklemek için “push” komutunu kullanırız.

git push [gitlinki] master

Bu komuttan sonra terminal bizden kullanıcı adı ve şifremizi isteyecektir.

Her işlemde gitlinki kullanmak istemiyor isek bir kısaltma ile bu işlemi kolaylaştırabiliriz. Örneğin;

git remote add origin [gitlinki]

komutu ile artık her defasında git linkini yazmamıza gerek yok. Bunun yerine “origin” ifadesini kullanabiliriz.

git push origin master

Bir repositoryi klonlamak için;

git clone [gitlinki]

Yine başka birine ait bir repositort fork edilebilmektedir. Fork işlemi genel olarak bir repository üzerinden değişiklikler yapıp o projeyi geliştirme amacı ile kullanılmaktadır. Repository üzerinden yapılan değişiklikler repository sahibinin onayına sunulur.

Bir repository içerisindeki dosyaları yerele indirmek için pull komutu kullanılır. Örneğin siz çalışırken biri master üzerinde değişiklik yapmış ise yerelinde aynı şekilde güncellenmesi için “pull” komutu kullanılabilir.

git pull origin master

Git tarafından algılanmamasını istediğimiz dosyalar olabilir. Bunun için “gitignore” dosyası oluştururuz.

touch .gitignore

oluşturulan dosyanın içerisine gizlenmek istenen dosya ve dizinler yazılır. Örneğin;

gizle.txt
gizlidosya/ 

Git Stash Komutu

Bir dosya üzerinde çalışırken henüz o dosya ile işimiz bitmeden başka bir dosyaya geçebiliriz. Peki bu durumda ilk dosya ne olacak? Henüz üzerindeki çalışmamız bitmediği için commit etmek de hata olur. Bu sebeple stash komutu kullanılıyor.

git stash save "dosyayi kayit ettim"

Bu şekilde yapılan kayıtları görmek için;

git stash list

Stash temizlemek için;

git stash drop //son stash silinir
git stash drop 1 //id 1 olan stash silinir

Kayıt yaptığımız bir stash dosyasını getirmek için;

git stash pop //son dosya getirilir.
git stash pop 1 //id 1 olan dosya gelir.

Git Alias Komutu

Alias komutu takma ad olarak geçiyor. Linux terminalinde de kullandığımız bir komuttu.

git config --global alias.durum status

komutu ile durum isminde bir komut oluşturduk. Artık “git durum” komutu status işlevi görecek.

git config --global alias.cm 'commit -m'

komutu ile “cm” isminde bir komut oluşturduk. Artık;

git cm "commit atildi"

komutu ile commit atabiliriz.

Git kullanımı eğitimlerinden almış olduğum notlar bu kadar. Harici öğrendiklerim olursa yeni bir yazı yazabilir veya bu yazıyı güncelleyebilirim. Bir sonraki içerikte görüşmek üzere…