Git Versiyon Control Sistemi Nedir ? Kullanılan Komutlar Nelerdir ?
--
Git Nedir ?
Git, ücretsiz ve açık kaynaklı bir sürüm kontrol sistemidir. En büyük özelliklerinden biride dağıtık mimariyi kullanarak merkezi yapıda bulunmamasıdır. Zaman içinde dosyalardaki değişiklikleri kaydetmenize ve bu dosyaların değişikliklerini ve belirli sürümlerini daha sonra görüntülemenize olanak tanıyan bir sistemdir. Git, küçük veya büyük projelerde çalışan geliştiricilerin kod değişikliklerini ve hatalarını yönetmeye yardımcı olur. Değişiklikleri aşamalandırmayı ve belirli bir sürüme kolayca geri dönmeyi kolaylaştırır.
Git Avantajları ;
- Dağıtık çalışabilmesi: Sunucuya bağımlılık şart değil. Yüklenen her ortam sunucu görevi görebilir.
- Hız odaklı tasarımı. (Easy to branch)
- Kaynak tüketiminin düşük olması.
- Git branch dosyalarını kopyalamaz, sadece referanslarını tutar.
Git VCS Kullanılan Komutlar
git clone
Uzak depodaki bir projeyi bilgisayarımıza kopyalamak için kullanılan komuttur.
$ git clone kopyalamak_istedigimiz_projenin_url
‘ git clone kopyalamak_istediginiz_projenin_urli ’
git config
Global bilgilerin (username & password by Repository or Global) yönetilmesinde yardımcı olur.
$ git config --global user.name "User name"
$ git config --global user.email "email"
git init
Yeni ve boş bir repository oluşturup, git’in çalışabilmesi için gerekli olan ayarlamaları yapar. Yeni bir projeye başlarken init ile başlarız.
git add
Çalışma dizinindeki dosyayı geçiş bölgesine aktarmak için kullanılır. Komutun sonunda bir dosya parametresi eğer tüm dosyaları aktarmak isterseniz “. “ parametresi bütün dosyaları geçiş bölgesine aktar anlamına gelmektedir.
git commit
Yapılan değişiklikleri tek bir commit için sıkıştırır ve repository’e eklenecek hale getirir. Her commit’in bir hash adresi vardır; git dosyaları kıyaslarken bu commit hash’ler üzerinden ilerler.
‘$ git commit -a
tüm dosyaları commit etmektir.$ git commit -m "index sayfası değiştirildi"
değişikliği mesaj ile ilettik.$ git commit -am "index değiştirildi"
iki işlemi bir arada yapmış olduk. İki satır komut girmek yerine tek satır ile iki işlemi yaptık.‘
git remote
Uzaktan kumandalar, yerel git deposundaki verileri GitHub, Bitbucket gibi istemcilere ve ayrıca uygulama geliştirirken Azure, AWS gibi bulut sağlayıcılarına göndermek için kullanılır.
git push
Uzak sunucuya değişikliklerin gönderildiği komuttur.
$ git push origin master // Uzak sunucudaki ana dalı master yapar.
$ git push -d origin master // Uzak sunucudaki ana dalı siler.
$ git push // değişikleri uzak sunucuya göndermemizi sağlar.
git pull
Çalışılan repository’nin bilgilerini ve yapılan son değişiklikleri local branch’e çeker,merge eder. Git pull içinde fetch ve merge barındırır.( git fetch sadece değişiklikleri çeker birleştirme yapmaz.)$ git pull origin dal_ismi
GitHub üzerindeki dalı bizim yereldeki dala merge etmeyi sağlar. Güncellemeler olduğunda, yenilikleri elimizdeki projeye dahil etmek için bu komutu kullanırız.git pull -p
uzak sunucudaki değişiklikleri çeker ve yereldeki origin olan branchlari siler.
git branch
Yeni branch oluşturmak, listelemek veya silmek için kullanılır.
-- branch bilgilerini gösterir
git branch -a-- yeni branch oluşturur
git branch myFeature-- branch'i local'den siler
git branch -d myFeature
git checkout
Dallar üzerinde geçiş yapmayı sağlar
$ git checkout dev // dev dalına geçiş sağlar.
$ git checkout -b yeni_branch // yeni_branch isimli dal oluşturup geçiş yapar.
git merge
Oluşturulmuş dalları birleştirmek için kullanılır.
git rm
Uzak sunucudaki dosyaları silmek için kullanılır.
$ git rm -r dosya_adi
git tag
Etiketle sürüm numarası oluşturmak için kullanılır.
$ git tag 1.0.1 commitin_hash_degeri
git rebase
Merge gibi farklı commitleri bir araya getirir. Merge’den farkı rebase uygulandığı branch’in üzerinde yeni bir merge commit oluşturmaz.
- Önce her iki branch’inde ortak commit’ini belirler. (Bir önceki örnekten A ve B üzerinden gidelim)
- Sonrasında A → A’ arasını çıkarır, geçici bir yere taşır.
- Yeni branch’i B → B’ arasını ana hatta çeker
- Geçici olarak taşıdığı A → A’ arasını tekrar ana hatta ekler.
git status
Çalışılan projedeki değişiklikleri listeler.
$ git status
git diff
Yaptığımız farklılıkları listeleyebiliriz. (Eğer bu komutu çalıştırdıysanız ctrl+z ile farklılıklar listesinden çıkış yapabilirsiniz)
Ayrıca iki dal arasındaki farklılıkları da listelememizi sağlar.
$ git diff <a branch> <b brach>
git log
Oluşan bütün commitler hakkında detaylı bilgileri listelemek için kullanılır.
git blame
Hangi dosyada işlem yapılmış veya değişiklik bilgileri listeler.
$ git blame dosya_adi
git revert
Commit ettiğimiz herhangi bir değişiklikleri geri almak için kullanılır.
$ git revert geri_almak_istedigimiz_comitin_hash_degeri
git reset
Revert gibidir fakat son commit silinir.
$ git revert --hard silmek_istedigimiz_comitin_hash_degeri
git remote
Uzak sunucunun yönetimini sağlar. Remote ismi, branch listeleri, repository bilgileri gibi bilgilere erişebiliriz.
git remote show origin: Genel olarak branchler ve repository hakkında bilgi verir. Yeni bir branch veya repo yarattığınız zaman sıklıkla kullanıp, remote üzerinde ne gibi değişiklikler olduğunu takip edebilirsiniz.
git clean
Local untracked durumundaki dosyaları siler, geri alır.
-- hangi dosyaların silineceğini gösterir
git clean -n
-- silme işlemi -f ile force edilir.
git clean -f
git clean -f -d
git stash
Yapılan değişiklikleri geçici olarak saklamak için kullanılır.
Stash, branchler arasında geçiş yapacağımız zaman çok kullanışlı oluyor. Git branch dosyalarını kopyalamadığı için örneğin; dev branch’inde bir değişiklik yaptınız fakat işiniz bitmedi ve master branch’ine bir hotfix atmanız gerekiyor fakat dev üzerindeki değişiklikleri kaybetmek istemiyorsunuz.
Bu durmda dev kodunu stash’a alıp, master’a geçip hotfix’i uyguladıktan sonra tekrar “stash apply” ile kaldığınız yerden devam edebilirsiniz.