Git  grep

Git’in önemli komutu grep hakkında bir kaç bilgi vereceğim.

Ben grep’i git’in arama komutu olarak biliyordum, ancak unix sistemlerde filtreleme komutu imiş. Geniş kullanım alanı varmış yani.

Genel söz dizimi

$ git grep [özellikler] arama_kelimesi [dosyalar]

Örneğin

$ git grep 'kapsayamama' /home/fatih/ana.css

Yukarıdaki örnek basit bir kullanıma örnek olarak veridi. /home/fatih/ana.css klasörü içinde kapsayamama kelimesini arayacaktır.

Grep’in bazı özellikleri vardır. Bu kısayolları kullanarak aramalarımıza bazı özellikler ekleriz.

$ git grep -v 'kapsayamama' /home/fatih/ana.css

İçinde kapsayamama geçmeyen satırları bize verecektir. -v (invert-match)

$ git grep -c 'kapsayamama' /home/fatih/ana.css

Aradığımız dosya içinde kapsayamama kelimesinin kaç kere geçtiğini bize gösterir. -c (count)

$ git grep -i 'kapsayamama' /home/fatih/ana.css

Aramanın büyük-küçük harfe duyarsızlaştırır. Yani arama sonuçlarında Kapsayamama çıkar. -i (ignore-case)

$ git grep -r 'kapsayamama' /home/fatih/

Aramanın belirlene dizin ve alt dizinlerde yapılmasını belirler. -r (recursive)

$ git grep -n 'kapsayamama' /home/fatih/

grep ile listelenen sonuçların hangi satırda olduğunu gösterir. -n (line-number)

$ git grep '\<script' /home/fatih/

‘\’(ters bölü işareti) karakteri kendisinden sonra gelen karakterin özel bir karakter olduğunu gösterir ve aramaya dahil edilmesini sağlar.

$ git grep 'kapsayamama' /home/fatih/
Birden fazla arama bloğunu bir arada kullanmak için boru(pipe) işaretini kullanırız.
$ git grep '^script' /home/fatih/

grep aramalarımızda Düzenli İfadeleri(regex) kullanabiliriz. Yukarıdaki örnekte script ile başlayan sonuçları getir demektir.

$ git grep 'script$' /home/fatih/

Yukarıdaki script ile biten satırları listeler. Düzenli ifadeler ile yapabileceklerimizi düşündüğümüzde aramalarımızı ne kadar özelleştirebileceğimizi anlarız.

$ git grep <script> /home/fatih | more
grep ile arama yaptığımızda pencere genişliği kadar çıktıları bize gösterir. Tüm satırın gösterilmesi için more kullanırız.

##Git kodlarını renklendirmek için

git komutları ve işlemlerini renklendirmek mümkündür. Daha okunaklı ekranlar için Git’in status, branch ve diff komutlarını renklendirelim. Renklendirme için konfigürasyon dosyasına ~/.gitconfig aşağıdaki kodları eklemeniz yeterli.

[color]
  branch = auto
  diff = auto
  status = auto

[color "branch"]
  current = yellow reverse
  local = yellow
  remote = green

[color "diff"]
  meta = yellow bold
  frag = magenta bold
  old = red bold
  new = green bold

[color "status"]
  added = yellow
  changed = green
  untracked = cyan

Git dallanmalarını düzenleme

Git’te master’a gitmiş bütün eski dallanmalarımızı(branch) -lokalden- silmek için şöyle bir komut kullanabiliriz:

git branch --merged master | grep -v 'master$' | xargs git branch -d

Kaynak: http://devblog.springest.com/a-script-to-remove-old-git-branches

Murat Çorlu

Git te dosya adı arama

git’te dosya adıyla arama:

git ls-files '*kelime*'

ls-files

Git ile Suçluyu Bulmak

git blame

Bir örnek yapalım:

git blame source/css-ile-tablolari-sekillendirmek.md

kodu aşağıdaki sonucu döndürüyor. Her satırı tek tek en son kimin, ne zaman değiştirdiğini gösteriyor.

blame

Git ile Sadece Belirlenen Dosyaları Gönderme

git add

ile eklenecek dosya veya dosyalar eklenir ve sonra

git commit -m "aciklama_yaz"

ile gönderim yapılır. Bir örnek yapalım. Örneği 3 dosyada değişiklik yaptık.

commit

Ancak biz bu değişikliklerden sadece bir tanesini(source/xhtml-ipuclari-1.md) göndermek istiyoruz

commit add

Dosyayı gönderirken

git commit -m "xhtml makalesindeki duzeltme yapildi"

kullanımı önemli.

commit push

Sonuçta sadece source/xhtml-ipuclari-1.md dosyası gönderilirken diğer iki dosya  gönderilmedi.

Otomatik Tamamlama

Git ile terminalde kod yazarken en güzel özelliklerden birisi <tab> tuşu ile otomatik tamamlama yapabilme özelliği. Benim bilgisayarımda hazır geliyor eğer sizde yüklü değilse kaynak bağlantıda yükleme ayrıntıları mevcut.

$ git co<tab><tab>
commit config

Yukarıda görüldüğü gibi git co yazdık ve yazacağımız komutu unuttuk veya tamamını yazmak istemedik, ilk <tab> tuşuna bastığımızda eğer başka eşleşen kelime yoksa bize direk sonucu getirir, <tab> tuşuna iki kere basınca bu sefer eşleşen tüm kelimeler altta listelenir. Sonraki <tab> tuşuna basışlarımızda ise altta listelenen kelimeler arasında gezeceğiz.

Yukarıdaki örnekte eğer com<tab> yapsa idik commit tamamlamasını otomatik yapacaktı.

http://git-scm.com/book/en/Git-Basics-Tips-and-Tricks

Kaynaklar

HTML5 ile birlikte gelen form elemanlarına yer tutucu(placeholder) ekleme özelliğine CSS3 ile stil verebiliyoruz.

Firefox Placeholder

Yer Tutucu(Placeholder); Formların input veya textarea alanlarında tanımlayıcı bilgileri gösterdiğimiz yapılardır. Firefox’da sağ üstte arama motoru alanında hangi arama motorunda arama yaptığımızda bilgi veren bir yazı bir yer tutucudur. Kullanıcı bu alana odaklandığında veya bir şeyler yazdığında bu yazı kaybolur ve kullanıcının yazdığı metin görünür.

Yer tutucular ilk başta kullanıcının odaklanması ile kaybolurken, Chrome’un öncülüğünde kullanıcı bir şeyler yazdıktan sonra kaybolmaktadır.

Yer tutucunun en büyük sorunu İnternet Explorer 10’da desteklenmesi. ie 8-9 desteklemiyor.

Daha önce ve şimdilerde desteklemeyen tarayıcılar için bu işlemi javascript ile yaparken HTML5 ile birlikte artık placeholder HTML5 özelliği ile direk HTML ile kullanabiliyoruz.

<input type="text" name="arama" placeholder="Arama Metnini Giriniz" />

Kodu ile bu yapıyı uygulayabiliyoruz. Yer tutucuların stillerine müdahale edebiliyoruz.

::-webkit-input-placeholder {}
:-moz-placeholder {}
:-ms-input-placeholder {}

Burada dikkat etmemiz gereken kısım -webkit tanımının başında iki adet iki nokta üst üste olması.

Yer tutucu stiline tanımlana bilen özellikler ve tarayıcıların desteğini gösteren aşağıdaki tablo önemli

Placeholder CSS Özelliği Destekleme Tablosu

kaynak:http://blog.ajcw.com/

Kaynaklar

Diğer tarayıcılar rastlamadığım için bir sorun olarak yazıyorum. sizlerde eğer böyle bir tanım yaptı iseniz veya kullandığınız kod bloklarında kullanılmış ise benzer sorunu sizde yaşıyor olabilirsiniz.

Bazı elemanları gizle göster yapmak için görünür alanın dışına çıkarırız. Bunun için genelde left tanımına görünür alanın içine girmeyecek büyüklükte bir değer girerek yaparız. Amaç daha hızlı olarak elemanları gizle-göster yapmak. Örneğin

left:-9999px

gibi. Bazen yüksek çözünürlükteki ekranlar düşünülerek bu değer uçuk bir rakam verilir.

left:-99999999px

gibi. Bu durumda Chrome 7. karakterden sonraki tanımları görmüyor ve bu atama yapılmamış gibi davranıyor.