Git Terminal Kodları
git init: Bilgisayarda bir klasör için git yapısını başlatır. Arka planda gizli birgitklasörü oluşturarak git ile ilgili her türlü bilginin burada saklanması sağlanır. Bu da her klasör özgünlük katar. Yani iki farklı klasör de ayrı ayrı git hesapları ile çalışabiliriz.git add: Buluta gönderilecek dosyaların git yapısında belirlenmesini sağlıyor. Eğergit add .olarak yazarsak tüm dosyaları seçmiş oluruz. Ya dagit add file_nameşeklinde dosya adı ya da adları ile yazarsak belirtilen dosyaların bulut sistemine eklenmesi için belirtir.git commit -m "**": Eklenen dosyalarda yapılan işlemlerin detaylarının belirtilmesini sağlar. (** : Yapılan işlemlerin belirtildiği kısımdır.)
Not: Commit yazılırken sade ve anlaşılır bir dil kullanılmalıdır. Gereksiz anlatımdan kaçınılmalıdır. Bakan kişi ilgili commit de ne yapıldığını anlamalıdır.
git remote add origin **: Bilgisayarımızdaki projemiz ile bulut sisteminde açtığımız repository i eşleştirmek için kullanırız. (** : repository’nin linki)git push origin branch_name: Belirtilen branch’in buluttaki kısmına ilgili commit’i göndermek için kullanılır.-Uda eklenerek zorlu gönderim gerçekleştirilebilir.git status: Mevcut durumu görmek ve dosyaların durumunu görüntülemek için kullanılır.git diff: Önceki commit ile yeni commit arasındaki değişiklikleri görmek için kullanılır.git clone **: Mevcutta public olan bir GitHub repository’nin ya da izin verilmiş private bir repository’nin bilgisayarımıza çekmemizi sağlar. (** : Klonlanacak GitHub reposunun linki)git pull: Bu komut ile server üzerinde yani buluttaki bilgileri lokalimize çekebilmemizi sağlar.git merge **: Bu komut sayesinde olduğumuz branch yapısını istediğimiz branch yapısı ile birleştirmemizi sağlar. (** : Birleştirilecek branch adı.)
Branch
git branch: Bu komut ile mevcutta bulunduğumuz branchi görebiliriz.git checkout **: Bu komut ile branch yapıları arasında geçiş yapabiliriz. Bir önceki branch deki değişiklikler geçiş yapılan branch ede gelir.(** : Geçmek istediğimiz branch ismini yazılacak.)git switch **: Bu komut ile ilgili branch e gidebiliriz. Bu geçişte önceki branch deki değişiklikler gelmez. (** : Geçmek istediğimiz branch ismini yazılacak.)git checkout -b **: Bu komut ile mevcutta bulunduğumuz branchin yeni bir kopyasını farklı bir branch ile oluşturabiliriz. (** : Oluşturulacak yeni branchin adı yazılır.)git branch -M **: Bu komut ile mevcutta olan bir branchin adını değiştirmek için kullanırız. En yaygın kullanımı çalışılan branch yapısınımainolarak değiştirmek içindir. (** : Branchin yeni adı.)
Stash
Projenin bir branchinde çalışırken başka branch yapısına geçmeden önce yapılan değişikliklerin geçici bir depoya atılmasıdır. Ya da alternatifli çözümler söz konusu olduğunda her çözüm için bir çalışma alanı oluşturması içinde kullanılabilir. Bunu gerçekleştirmek için
git stash komutu kullanılır.
Eski branch yapısına geldikten sonra geçici depodaki değişiklikleri ger çağırmak için
git stash apply komutu kullanılır. Devamında bir index numarası verilirse ilgili index numarasını getirirken değer verilmezse default olarak 0. index getirilir.
Gelen listede en küşük index numarasına sahip olan her zaman en yeni olandır.
git stash listile ekrana gelen listeden seçim yapmak için ekranda gelenstash(0)yazısında istinilenin numarası alınır vegit stash apply 0yapılarak çağrılabilir.git stash push -m "**"komutu ile stash yaparken yapılan stash işlemine açıklama eklenmesi sağlanabilir. (** : Gerekli açıklamanın yazılacağı kısım.)git stash drop **komutu ile istenilen bir stash kaldırılabilir. (** : Kaldırılmak istenen stash in numarası.)git stash pop **komutu ile istenilen stash ekrana getirilir ve o stash kaldırılır. (** : Kaldırılmak istenen stash in numarası.)git stash clearkomutu ile tüm stash lerin kaldırıması sağlanır.git rm —cached **: Stage kısmına eklenmiş dosyayı çıkarmaya yarar. (**: Çıkarılacak dosya ismi). Aynı zamanda github a gönderilmiş yanlış dosyaları da silinebilir.
Checkout, Revert ve Reset
git log --onlinekomutu ile atılmış tüm commitler görülebilir.git checkout *****komutu ile aynı zamanda istenilen bir commite geri dönülebilir. Amacı ilgili commit e sadece bakmamızı sağlar “read only”. Bu işlem atlanılan commit leri silmez.git pullile de son commit atılmış haline geri dönebiliriz. (***** : Dönülmek istenilen commit in numarası)
Not: Bu işlemin yapılabilmesi için pull request işleminin yapılmış olması gerekiyor.
git revert **komutu ile istenilen commit e gidilir ve o commit mevcutta geçerli olan olacak şekilde üzerinde işlem yapılır. Amacı getirilen commit in değiştirilebilmesi “read and edit”. Geri getirilen commit zarar görmez. (*** : Dönülmek istenilen commit in numarası.)
Not: git revert yaparken merge edilmiş hali değil commit hallerini almamız gerekiyor.
git reset **komutu ile belirtilen commit işlemi sonrası yapılmış tüm commitler silinir. Ancak çalışma ortamına uygulanmaz. Çalışma ortamına da uygulanmasını istiyorsakgit reset ** --hardkomutu kullanılmalıdır. (** : Gidilmek istenen commit in numarası.)
Not: git reset yapıldıktan sonra yaptığımız değişiklikleri tekrardan buluta yüklemek istediğimizde sadece git push yeteri olmayacaktır. Bunun için git push --force origin ** komutu kullanılır. (** : Push yapılmak istenen branch adı.)
Merge Conflict (Kod Çatışması)
- Main proje üzerinde iki farklı collaborators un atnı kaynağı kullanarak oluşturdukları dosya ya da dosyalarda aynı satırlar üzerinde çalışması sırasında birinin merge etmesi ve diğerinin bu merge işleminden habersiz olması durumunda kodlarının çatışmasıdır.
- Bu durumu çözebilmek için :
- Değişiklik olmuş ana proje yeniden kendi branchimiz ile
git pullyaparak eşitlemeliyiz. - Daha sonra merge yapıldığında
conflictgerçekleşir. - Git yapısı bize sorar öncekinimi korumak istiyorsunuz ya da kendi yaptığınızı mı kulanmak istiyorsunuz diye.
- Seçim yapıldıktan sonra alan yeniden editlenerek düzenlenir.
- Değişiklik olmuş ana proje yeniden kendi branchimiz ile
Not: Merge işlemi sonrası mevcut yapının çalışıp çalışmadı ve yapılan değişikliğin diğer yapıları bozmadığı kontrol edilmesi çok önemlidir. Merge işlemi sonrası çalışmayan kısımlar için yeni değişiklikler yapılabilir ve bu güvenlidir. Sadece dikkat edilmesi gereken merge işlemi otomatik stage e atma işlemi yapar ancak sonradan yapılan değişiklikler tekrar git add ile stage atılmalıdır.




