8 Aralık 2015 Salı

Git Kurtarıcı Komutlar

Git bilindiği üzere sürüm kontrol sistemidir(SKS). Git dosyalarınızda, projenizde değişiklikleri kaydetmek, karşılaştırma yapmak ve istediğiniz sürüme geri dönebilmek için önemli bir araçtır.Git hakkında daha fazla bilgi edinmek için  bakınız :   Kaynak 

Bir sorun olduğunda en son kimin değişiklik yaptığını, sorunun nereden kaynaklandığını görebileceğiniz , silinen değişiklikleri kurtarmak için tabiri caizse hayat kurtaran bir çok önemli  git komutlarını  bilmek gerekir.

Git temel komutları şunlardır :


Ben sıklıkla ihtiyaç duyduğum,  önemli olan  birkaç komut hakkında bilgi vereceğim. Hangi durumlarda ihtiyaç duyar ? Nasıl çözüme kavuşuruz ? 


 1.  Öncelikle birçok kişinin birlikte yürüttüğü bir proje üzerinde çalışıyorsanız dikkat edilmesi gereken durumlar vardır. Projeyi çalıştırdınız,  hata veya bir eksik fark ettiniz bunu düzeltmek isteyebilirsiniz. Peki ya biri bunu düzelttiyse ? Yapılan bir şeyi tekrar yapmak gereksizdir.Daha da önemlisi siz farklı yöntemle düzeltirsiniz aynı sayfa üzerinde çalışacağınız için çakışma olacak ve içinden çıkılmaz bir hal alacaktır. Merge olan bir projeden kolaylıkla geri alınamayan bir durumla karşılaşmış olacaksınız .

Bunun için ilk tavsiyem projenizin bulunduğu dizindeyken  sizden önce yapılan değişiklikleri çekmek ve kontrol etmekte fayda var . 

Bunu sağlayan komut : 
  • git pull origin master 

master projenizin merge olmuş içeriklerinin bulunduğu ana dizindir. Bu dizinden değişikleri bu komutla yerelimize çekiyoruz.
  • git fetch origin master  

komutu ile localimdeki değişikliklerle çektiğim değişiklikleri birleştir diyoruz.     

2. Bir branch açtınız ve üzerinde çalışmanızı yürüttüğünüz esnada kullanmanız gereken bir şeye ihtiyaç duydunuz ve bunu sizin çalışmanız esnasında başka bir arkadaşınız halletmiş ve merge olmuşsa bunu çekmek istiyorsunuz, fakat işiniz bitmedi push etmediğiniz içinde pull edip kullanamıyorsunuz bu noktada imdadınıza stash yetişiyor. Stash değişiklikleri geçici olarak tutan farklı bir depolama alanıdır. 
  • git stash 
deyip bu değişikllikleri stash e atarsak, master branca geçip pull ettikten sonra tekrar kendi brancınıza dönüp;
  •  git stash pop 
diyerek stash e attığınz çalışmanızı alıp bahsettiğimiz senaryoyu gerçekleştirmiş olacaksınız. Stash de başka hangi yedekler var görmek için;
  •  git stash list  
işe yarayacaktır.
  • git stash drop
 ile de stashi temizleyebilirsiniz. Stash de bir çok kayıt var siz içinden birini çekmek istiyorsanız ;
  • git stash pop stash@{1} 
diyerek listeden istediğiniz sırada bulunan kaydı çekebilirsiniz.    
                             
3. Projenizi herhangi bir brancha resetlemek de ihtiyaç duyulan durumlardan birisidir. Bunun için de;
  • git reset--hard origin/master,  origin/feature/12
komutu çalıştırılır.       
                                    
4. Çalıştığınız branch üzerinde push ettikten sonra başka değişiklikler yaptınız fakat her biri için her defasında farklı commit mesajları yazmak iyi fikir değildir. Çalışmanızı merge olmadan önce kontrol eden yetkililer birden fazla commit görmek pek istemezler bunun için;             
  •  git commit --amend 
komutu sayesinde önceki commit ile push etmeyi sağlayabiliriz.        
                                
Branchınızda her yaptığınız değişiklik için push ederken birden fazla commit kullanmış olabilirsiniz. Bunu sonradan düzeltmek isterseniz de şu komut;
  •  git rebase -i HEAD~3 
kullanılır. Bu komut ile 3 tane birleştirmek istediğimi ifade ediyorum.                                                                    
5. Bir diğer önemli konu da Rebase işlemidir. Aynı dosya üzerinde çalışan kişilerin sıklıkla karşılaştığı can sıkıcı uğraştırıcı bir durumdur. Siz çalışmanızı yürütürken diğer arkadaşınızın tamamladığı kısım merge olmuşsa rebase yapmanız gerekir. Rebase için takip etmeniz gereken önemli adımlar şunlardır:
      
1.Master branchına geçiyoruz:
    • git checkout master
2.Localimizdeki master dizinini güncelliyoruz:
    • git pull origin master
    • git fetch origin master
3.Kendi branchımıza geçiyoruz:

    • git checkout feature/test
4.Master dizinine göre rebase başlat diyoruz:
    • git rebase - -interactive origin master
5.Şu komutla duruma bakarak çakışan dosyaları kırmızı olarak görüyoruz :
    •  git status 
6.Sonra bu dosyalara geçip çakışan kısımları düzeltip kalan  komutlarla devam ediyoruz.  Değiştirdiğiniz dosyaların hepsini push etmek için ekliyoruz:
    •  git add .
7. Dikkat edelim !  mesaj yazmıyoruz aynı commiti kullanması için :
    • git commit 
8.Continue  devam için,  abort  iptal için kullanıyoruz:
    • git rebase - - continue,  git rebase - -abort

9.Push ederek tamamlıyoruz.
    • git push -f origin feature/test

Hiç yorum yok:

Yorum Gönder