Bi tık ileri seviye GİT

* Bu yazı 18 Nisan 2024 Perşembe tarihinde güncellenmiştir.

____________________________

Merhaba dostlarrr.. 

Nasılsınız bakalım :))

GİT komutları yazısı çok okunuyor

Git komutları - https://gelistiricininnotlari.blogspot.com/2021/09/git-komutlar.html

Bloğumda en çok okunan yazılar kısmı var. Orada Git Komutları yazısı başı çekiyor. Aslında o yazıda ben sık kullandığım git komutlarını size anlatacaktım ve yazı kısa olacaktı. Yani öyle düşünüyordum. Gaza gelip içerik ekledikçe utanmasam komple git komutlarını bu yazıya ekleyecektim. 

Utandım.. :)

Eklerim eklemesine de siz okurken kafa bi dünya olur. Aradığınızı bulamayabilirsiniz. Bunu yapmak ayıptır. Bana yakışmaz. O yazıdaki içeriğe sadık kalarak sadece sık kullandıklarımı oraya ekleyeceğim. Bu yazıda ise diğer git komutlarını ve git ile ilgili tüm kaynakları buraya yazacağım.

 

Bi tık ileri seviye dediğim aslında nedir?

"Bi tık ileri seviye" demek başlangıcın biraz üstü demek. Yukarıda bahsettiğim ilk yazımın başlığını "Git Komutları Temeller" olarak değiştirdim. 

Bi sor bakalım niye böyle yaptım? :)

Ayrı bir sayfa açıp, sık kullanılan basit ve temel komutlardan ziyade biraz daha ileri seviye diyebileceğimiz bilgileri buraya yazmak istiyorum. Artık buna ister bi tık ileri seviye deyin isterseniz de profesyonel kullanım deyin.. İçerikleri ayırmak şart oldu.  Yoksa güzelim masumane yazım karman çorban bilgilerle dolmaya başlamıştı.

Buraya ekleyeceğim bilgiler herhangi bir sıra ile gitmeyecek. Güncel olarak bulabildiğim bilgileri burada sizlere sunacağım. Hemen bugün bulduğum bir bilgi ile başlayalım..



1. Konu:    Git squash vs rebase vs merge

Kodunuzu git ile sürüm kontrolü yaparken, özellik dallarını ana dalla birleştirirken genellikle üç seçenek vardır. Her birinin kendine has tuhaflıkları vardır, peki hangisini kullanmalısınız? 

 
Başlıkta yazan konuyu ilk olarak şuradaki twitten gördüm, Konunun linki şurada yer alıyor.
makale ve türkçe çevirisi

Peki bu bilgi bizim ne işimize yarayacak? Şöyle arkadaşlar, Hüseyin BABAL abimiz git ile ilgili ileri seviye sayılabilecek bilgiler paylaşmış. Türkçe içeriğe sahip videosunun kendisi altta, videonun linkide  şurada Yukarıdaki görseldeki bilgi ile aşağıdaki videounun içeriği bir biriyle örtüşüyor. Bu yüzden üstteki görseldeki olayı tam anlamadıysanız aşağıdaki videoyu izlerseniz anlayabilirsiniz.


Hüseyin BABAL - [TR] Using Git Like a Hero - https://www.youtube.com/watch?v=m0X5Dv_B36g


 

2. Konu:    Git Komutlarını Değil, Kavramlarını Öğrenin

Git kullanmak istiyorsunuz, değil mi?  Ama sadece komutları öğrenmek değil, ne kullandığınızı anlamak mı istiyorsunuz?  O zaman bu sizin için!

Bu makalemizde diğer bir güncel makalelerden.. Biraz uzunca.. Ama anlaşılır..

Makalenin orjinali şurada, türkçe çevirisi de şurada yer almaktadır.
Git'in komutlarını değil nasıl çalıştığını öğrenin - https://dev.to/unseenwizzard/learn-git-concepts-not-commands-4gjc

Makalenin içeriği epey bi uzun. Ben size o makaleden başlıkları göstermek istiyorum;

  1. Genel Bir Bakış
  2. Remote Bir Repository Almak
    1. Yeni Şeyler Eklemek
  3. Değişiklikler Yapma
  4. Branching
  5. Merging
    1. Fast-Forward Merging
    2. Farklı Branchler ile Merge
    3. Conflictleri (Çakışmaları) Çözmek
  6. Rebasing
    1. Conflictleri Çözmek
  7. Remote Değişikliklerle Dev Environment’ı Güncellemek
  8. Değişiklikleri Almak (Fetching)
  9. Değişikleri Çekmek (Pulling)
  10. Değişiklikleri Zulalamak (Stashing)
  11. Conflictlerle Beraber Pull
  12. Cımbızlamak (cherry picking)
  13. Geçmişi Tekrar Yazmak
  14. Son Commit’i Düzenlemek
  15. İnteraktif Rebase
  16. Public Geçmiş, Neden Tekrar Yazmamalısınız ve Yine de Nasıl Güvenli Bir Şekilde Yapabilirsiniz
  17. Geçmişi Okumak

Bu makale ile ilişkili linkler


 

3. Konu: Git Commit Mesajı Nasıl Yazılmalı

Git'i öğrendik ve kullanmaya başladık. Yazılım işleriyle epeydir uğraşanlar Git'i kullanırken daha rahat etmek için config mesajlarının güzel olmasına karar vermişler. Yazılım işinde herkesin farklı iş yapmaması ve belli standartlarda anlaşılıp ona göre çalışılması yazılımcılar için iyi sonuçlar vermektedir. Git'in commit mesajlarını yazarken bazı dikkat edilecek noktaları varmış. O noktalara dikkat ederek çalışılırsa güzel olur. Neymiş bu dikkat edilmesi gereken şeyler derseniz buyu-run beraber bakalım.

 


Unutmadan, bir çok kişi commit mesajları nasıl yazılmalı diye yazı ve video paylaşmış. Linkleri alta makalenin sonuna eklerim. Ben bu yazıda o paylaşılan bilgilerden bir derleme yapıp size sunuyorum.


  • Başlık ve gövdeyi boş bir satır ile birbirinden ayırın
  • Başlığı 50 karakter ile sınırlandırın
  • Başlığa büyük harf ile başlayın
  • Başlık satırını nokta ile sonlandırmayın
  • Başlığı emir kipi ile yazın
  • Gövde satırlarında 72 karakter uzunluğunu geçmeyin
  • Gövdede neyi niçin değiştirdiğinizi açıklayın

4. Konu: Başka bir brancteki seçtiğim commiti bir başka branche kopyalamak 

git log  

git cherry-pick 

5. Konu: Yanlışlıkla gönderdiğim son comiti yada belirlediğim commiti geri almak hiç yazılmamış gibi olmasını sağlamak

git reset --hard HEAD~1  

git rebase branch_name

6. Konu: Gerekli olabilecek Listeleme komutları


7. Konu: Githuba ssh key nasıl ekleriz konulu yazı yazdım. Şurada: 

https://gelistiricininnotlari.blogspot.com/2023/08/git-icin-ssh-key-nasl-kurulur-adm-adm.html


8. Konu: Uzak sunucudaki branchlerde işlem yapmak 

* Branch konusuyla ilgili temel komutları şurada ele aldım.

Bilgisayarımızdaki branchleri görmek için; git branch komutunu kullanıyoruz.

Uzak sunucudaki (github vb. gibi) branchleri görmek için; git branch -r komutunu kullanıyoruz.

---------

Bilgisayarınızdaki branchler arası geçiş yapmak için; git switch branchadı yada git checkout branchadı komutunu kullanıyoruz.

Uzak sunucudaki (github vb. gibi) branche geçiş yapabilmek için sadece: git checkout origin/branchadı komutunu kullanabiliyoruz. Git switch komutu maalesef burada işe yaramıyor.

Not: Uzak sunucudaki branchi açtığınızda iki işlem yapabilirsiniz. Ya vazgeçersiniz. Lokalinize dönersiniz. Bunun için branch değiştirmek yeterli olur.

Yada yeni bir branch oluşturabilir içinde çalışabilirsiniz.


9. Konu: Git Pull

Git pull iki işlemin kısaltılmışıdır. Şöyle ki; git pull = git fetch + git merge

git pull  komutunu çalıştırmadan önce lokalinizdeki çalışmalarınızı mümkün mertebe git'e kaydedin. Aksi takdirde çakışma çıkabilir.

Çalışmalarınızı lokalde kaydettiğinizde ve sonra git pull komutuyla uzak sunucudaki dosyaları lokalinize çektiğinizde, uzak sunucuya göre ya geri yada ileride olabilirsiniz. Bunun için uzak sunucuya dosyalarınızı göndererek uzak sunucu ile siz eşit hizada olmuş olursunuz. İllaki uzak sunucu ile lokal aynı hizada olacak diye bir şart yok. Ben git pull olayını size anlatabilmek için bu şekilde örnek verdim.

git'in branch sisteminin görsel anlatımı

Git pull yerine git fetch kullansak?

Öyleyse bizim için ideal olan git pull yerine git fetch yapmamız olacaktır. Neden? Çünkü git fetch yapar isek uzak sunucudaki kodları lokalimize alır, inceler, gerekli görürsek kendi kodlarımızla birleştirme yaparız.

Git pull & git fetch komutlarının görselleştirilmiş hali

10. Konu: Git'e tanımlanmış user ve e-maili bulmak

Bilgisayarınızdaki git'e tanımladığınız user ve e-maili nasıl bulursunuz? İşte cevabı.

git config --global user.name : Bu komut size git'e tanımladığınız username'i verir.

git config --global user.email : Bu komut size git'e tanımladığınız user email'i verir.


11. Konu: Git'te windows ve linux satış başı/sonu uyumsuzluğu hatası

git bash kullanarak projemi git'e eklerken şöyle bir hata mesajı almıştım;

$ git add . 

warning: in the working copy of 'c_calismalari.cbp', LF will be replaced by CRLF the next time Git touches it

Bu sorunu araştırdığımda güzel bir yazıya denk geldim. Hatanın temeli şuymuş; hem windows hemde linux kullanıyorsanız yada aynı dosyalarda birden çok farklı kişi çalışıyorsa (mac, linux, windows gibi) o zaman yazılar iç içe girmesin diye bir şeyler yapmanız gerekiyormuş. Yok ben sadece windowste geliştirme yapıyorum derseniz uyarıyı es geçebilirsiniz. 


12. Konu: Github'ta branch'in ismini değiştirdiğinizde lokalde..

Benim bilgisayarımda master olarak ana branch açılıyor. Githubda ise bu main olarak geliyor. Bende githubdaki ismi master yapayım istedim. Ve yaptım da. Ayarlara girdim ordan yaptım geçtim.

Fakat github eğer bu repository'iniz bilgisayarınızda da kurulu ise orada da bazı kodları kullanarak değişiklikler yapabilirsiniz diye bize bir takım kodlar vermiş. Benim gibi sizde github'da ana branchin adını değiştirirseniz bu kodları muhakkak görürsünüz. Reponuzun ana sayfasına gidince hemen önünüze çıkıyor. Ben yinede genel kültür olarak buraya eklemek istiyorum;

If you have a local clone, you can update it by running the following commands.

(TR - Eğer yerel bir klonunuz varsa aşağıdaki komutları çalıştırarak güncelleyebilirsiniz.)

git branch -m main master

git fetch origin

git branch -u origin/master master

git remote set-head origin -a 

Github'ta branch'in ismini değiştirdiğinizde

13. Konu: Branchin ismini değiştirmek (Lokalde)

Bilgisayarınızda git üzerinde bir branchin adını değiştirmek istediğinizde aşağıdaki kodu uygulayın.

git branch -m branchismi yenibranchismi




Bu makale ile ilişkili linkler ve kaynaklar

Yorumlar