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
• 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 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
Leave a Reply