Vakit buldukça git kullanırken öğrendiğim yeni komutları buraya yazmak istiyorum, hem daha sonraları kendim kolayca erişirim hem de araştırıp denk gelen kişilere olursa faydam olur 🙂


• Bazı Dosyaları Görmezden Gelmek

Bu durumda, görmezden gelinecek dosyaların konumlarıyla eşleşen örüntüleri listeleyen .gitignore adında bir dosya oluşturabilirsiniz:

$ cat .gitignore
*.[oa]
*~

İlk satır, Git’e .o ya da .a ile biten dosyaları görmezden gelmesini söylüyor. İkinci satır, Git’e Emacs gibi pek çok metin editörü tarafından geçici dosyaları işaretlemek için kullanılan tilda işaretiyle (~) biten bütün dosyaları görmezden gelmesini söylüyor. Bu listeye log, tmp ya da pid klasörlerini, otomatik olarak oluşturulan dokümantasyon dosyalarını ekleyebilirsiniz. Daha projenin başlangıcında bir .gitignore dosyası oluşturmak yazılım havuzunuzda istemeyeceğiniz dosyaları yanlışlıkla kaydetmenize engel olacağından oldukça iyi bir fikirdir.

.gitignore için daha fazla ayrıntı.


• Son Commit Mesajını Değiştirmek

Eğer kaydı çok erken yapmışsanız, bazı dosyaları eklemeyi unutmuşsanız ya da kayıt mesajında hata yapmışsanız, sık rastlanan düzeltme işlemlerinden birini kullanabilirsiniz. Kaydı değiştirmek isterseniz, commit komutunu --amend seçeneğiyle çalıştırabilirsiniz:

$ git commit --amend

Örnek olarak:

$ git commit -m 'initial commit'
$ git add forgotten_file
$ git commit --amend

Ayrıntı için.


• Add Edilen Dosyayı Commit Yapmadan Kaldırmak

Diyelim ki iki dosyayı değiştirdiniz ve bu iki değişikliği ayrı birer kayıt olarak işlemek istiyorsunuz, ama yanlışlıkla git add * komutunu kullanarak ikisini birden hazırlık alanına aldınız. Bunlardan birini nasıl hazırlık alanından çıkarabilirsiniz? git status komutu size bunu da anımsatıyor:

$ git add .
$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   README.txt
#       modified:   benchmarks.rb

benchmarks.rb dosyasını bu öneriye uygun olarak hazırlık alanından kaldıralım:

$ git reset HEAD benchmarks.rb
benchmarks.rb: locally modified
$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   README.txt
#
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   benchmarks.rb

• Dosyadaki Değişikliği Geri Almak

Peki benchmarks.rb dosyasındaki değişiklikleri korumak istemiyorsanız? Yaptığınız değişiklikleri kolayca nasıl geri alacaksınız?

# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   benchmarks.rb

Yaptığınız değişiklikleri nasıl çöpe atabileceğinizi açıkça söylüyor. Gelin, söyleneni yapalım:

$ git checkout -- benchmarks.rb
$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   README.txt

• Uzak Repo ile Çalışmak


• Uzak Repodaki Son Değişiklikleri Kontrol Etmek

$ git remote

komutunun çıktısı bize uzak reponun adını verecektir, bu adı aşağıdaki komutta kullanacağız:

$ git fetch [uzak-reponun-adı]

Örneğin:

$ git fetch origin

Bu komut, söz konusu uzaktaki yazılım havuzuna gidip orada bulunup da sizin projenizde bulunmayan bütün veriyi getirir. Bunu yaptıktan sonra sizin projenizde o uzak yazılım havuzundaki bütün dallara referanslar oluşur —ki bunları birleştirme yapmak ya da içeriği incelemek için kullanabilirsiniz.

Bir yazılım havuzunu klonladığınızda, klonlama komutu söz konusu kaynak yazılım havuzunu origin adıyla uzak uçbirimler arasına ekler. Dolayısıyla, git fetch origin komutu, klonlamayı yaptığınızdan (ya da en son getirme işlemini (fetch) yatığınızdan) beri sunucuya itilmiş yeni değişiklikleri getirir. Unutmayın, fetch komutu veriyi yerel yazılım havuzunuza indirir —otomatik olarak sizin yaptıklarınızla birleştirmeye, ya da çalıştığınız şeyler üzerinde değişiklik yapmaya kalkışmaz. Hazır olduğunuzda birleştirme işlemini sizin yapmanız gerekir.


• Uzak Repo ile Yerel Repo Arasındaki Farkları Kontrol Etme

Uzak repodaki son değişiklikleri kontrol ettikten sonra,

$ git diff origin/{dal}

komutu kullanarak, satır satır değişiklikleri inceleyebilirsiniz. Ayrıca --summary parametresiyle sadece değişiklik yapılan dosyaları görüntüleyebilirsiniz.


• Uzak Repoyu Aktif Dala Birleştirme

Diyelim ki uzaktaki dal ile aktif dalınız arasındaki değişiklikleri kontrol ettiniz ve uzakt repodaki değişiklikleri aktif daldaki projenize dahil etmek istiyorsunuz, bu durumda:

$ git merge origin/{dal}

komutunu kullanarak, uzakta yapılan değişiklikleri yerel reponuza ekelyebilirsiniz. Birleştirme işlemi yapılırken, herhangi bir satır veya satırlar hem yerel repoda hem uzak repoda değiştirildiyse, merge işlemi bu değişikliklerin her ikisini de tutacaktır. Bu değişikliklerden tercih edilen kaynak kod üzerinden manuel olarak düzeltildikten sonra çalışmaya devam edebilirsiniz; manuel olarak düzeltme yapılmadığı takdirde uzak repoya “push” işlemi dahil bazı git işlevlerini kullanamazsınız, düzeltme yapmanız gerektiği uyarsını alırsınız.


• Uzak Repodaki Dalı Silmek

Diyelim ki uzak bir dalla yapacaklarınız bitti ve siz ile takım arkadaşlarınız bir özelliği tamamlayıp sizin uzaktaki master dalınıza (veya kararlı kodunuzun olduğu herhangi bir dalda) birleştirdi. Bir uzak dalı git push [uzakadı] :[dal] sabit sözdizimini kullanarak silebilirsiniz. Eğer sunucudan serverfix dalını silmek isterseniz, şu komutu çalıştırın:

$ git push origin :serverfix
To git@github.com:schacon/simplegit.git
 - [deleted]         serverfix