Yunus Emre
Software Engineer
Git Kullanımı ve Komutları
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ı;
Kod | Açıklama |
---|---|
pwd | Bulunduğumuz dosya yolunu gösterir. |
ls | Bulunduğumuz klasörün içerisindeki listeler. |
cd | Dizine giriş komutu. |
cd .. | Bir geri dizine gider. |
mkdir yeniklasor | Dizinde yeniklasor isminde dosya açılır. |
Kod | Açıklama |
---|---|
touch deneme.php | deneme.php isminde dosya oluşturulur. |
vi deneme.php | Düzenleme için dosya açılır. |
rm deneme.php | Dosyayı siler. |
rm -r yeniklasor | yeniklasoru içindekilerle birlikte siler. |
git init yunusemre | yunusemre 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 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…