Yazılan kodların değişiklerinin kontrol altına alma gerektiğinde eski sürümlerine dönme amacıyla versiyon kontrol sistemi git kullanılabilir. Git i indirmek için https://git-scm.com/download/ adresinden işletim sistemine uygun program indirilebilir. Terminal ile aşağıdaki komutlara ile git işlemleri yapılır yada sourcetree ile görsel olarak aynı git işlemleri yapılabilir.
$git status: commit öncesi yapılan değişiklerin özetini gösterir
$git add: değiştirilen dosyalardan hangilerinin commit işlemine dahil olmasını bu komut ile staging area ekleyerek belirtiriz
$git commit: komutu ile yapılan değişiklikler yeni bir versiyon olarak git de kayıt altına alınır
$git log: yapılan tüm commit özetini görürüz
$git add dosya_adi
$git add . diyerek klsörde bulunan tüm dosyalar stating area eklenir
$git commit -m “mesaj kısmı” ile commit işlemi gerçekleştirilir
$git commit -a -m “mesaj kısmı” ile staging area eklemeden direkt commit işlemini yapabiliriz.
$git commit –amend -m “Dördüncü satır eklendi” //son eklenmiş commitin açıklamasını değiştirdi
$git checkout gidilecek_commit_hashcode //commitin o anki duruma gider
$git checkout master // bütün dosyların olduğu son duruma gider
stash özelliğinde hem commit edilmiyor hemde dosya silinmiyor stating area eklenmişse bile bilg.daki çöp kutusu gibidir.
Branch komutu ile dallama işleme işlemi yapılır ana daldan ayrılarak bir branch oluşuturulu sonra master branh ile birleştirilir (merge).
$ git branch //mevcut branchi gösterir
$ git branch -v // branch içeriğinide gösterir
$ git branch test //test branch i oluşturdu
$ git status //hangi branch te olduğunu gösterir
$ git branch //mevcut branchleri gösterir
* master
test
$ git checkout test //test branch ine geçilir
Switched to branch ‘test’
$ git add home.component.html //test branch i değişikilği stating area ekledi
$ git commit -m “test branchindeki ilk commit” //stating area daki değişikliği commit edildi.
ALT BRANCH TEKİ DEĞİŞİKLİKLERİ MASTER BRANCH İLE BİRLEŞTİRME “MERGE” İŞLEMİ
$ git merge test
test branchindeki ilk commit //test branch deki commit master branche eklenmiş oldu
Merge işlemi yapılsada test branchi silinmiyor duruyor
$ git branch
* master
test
STASH
git stage komutu ile o anki değişiklikler commit edilmez
$ git stash //ile stating area daki dosya commit edilmeden ve silinmeden stashe kayıt altına alındı
git log da kayıdı görünmüyor
$ git stash list // ile stash lere ulaşılabilir
$ git stash pop // ile en son stash pop stating area geri alınır
git stash list ile listele “stash@{0}” olan stash i seç
$ git stash apply stash@{0} //komutu ile pop gibi stash stating area geri alınır
ancak stash stash listten silinmez
$git stash drop stash@{0} //değişikliği stash listesinden siler
GIT ALIAS //takma isim uzun kodları kısaltıyor
git config -global alias.hist “log -all -graph -decorate -oneline” //tırnak içindeki kodu hist kelimesi ile kısalttı
GIT MERGE ve DIFF Araçları
Görsel olarak farkları görmek ve değişiklikleri birleştirmek için içindi. Ekstra bir yazılım kullanılır.
P4MERGE denilen araç bu işlem için kullanılır.
$ git diff 6a3a5183f4194c147bbf3c3d836c8a9f97857b7e 04baa15c04fe9200470a558a1abf3ea9d11cf30f
//rakam ve harfle commitlerin kodu ikisi arasındaki farkları gösteriyor.
$ git difftoll 6a3a5183f4194c147bbf3c3d836c8a9f97857b7e 04baa15c04fe9200470a558a1abf3ea9d11cf30f
ile gelen uyarıya Y diyince basit bir karşılaştırma tablosu ile değişiklikleri gösterir
ancak p4merge porgramı ile kullanılırsa daha iyi bir görsel verir
P4MERGE git e tanıtma ayaları
$ git config –global merge.toll p4merge //difftoll için tanıtma işlemleri
BRANCH KODLARI
yeni branch git branch branchadi
tüm branchler listelemek için git branch -a
Branch silmek için git branch -d branchadi
yeni bir branch oluşturup ona geçmek için : git checkout -b yeniBranchadi
master ile brnch merge etme önce master branch geç
git merge branchad
conflict : çatışma
Master branch ile merge işlemi sırasından master branchdeki kod alt branchde değişitirlmişse conflict oluşur ve hangi branchteki işlemin kalıcı olması seçilerek conflict in çözülmesi gerekir. Conflict durumunda değişikliğe bizim karar vermemiz istenir.
GITHUB PROJE CLONE İŞLEMLERİ
Clone ve Push Komutları
Clone: bir projeyi masaüstüne kopyalamaktır.
$ git clone https://github.com/mzkarakas/sourcetree.git
Cloning into ‘sourcetree’…
remote: Enumerating objects: 10, done.
remote: Counting objects: 100% (10/10), done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 10 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (10/10), done.
remote repository nin default adı origindir.
$ git remote
origin
$ git remote -v //origin açıklaması
origin https://github.com/mzkarakas/sourcetree.git (fetch)
origin https://github.com/mzkarakas/sourcetree.git (push)
$ git push origin master //origin e master branch e yaptığımız commitleri push ediyor.
LOCAL PROJEYİ GITHUB’A YÜKLEME
git init sonrası
$ git add . //bütün dosyaları staging area ekler
$ git commit -m “initial commit” //tüm add leri commit ettik
$ git push https://github.com/mzkarakas/websitem.git master //githubda yeni repository oluştduk linkin kopyalayıp push komutu
ile master branchi belirterek push ettik
$ git remote add origin https://github.com/mzkarakas/websitem.git //remote origini tanımladık
$ git remote -v
origin https://github.com/mzkarakas/websitem.git (fetch)
origin https://github.com/mzkarakas/websitem.git (push)
$ git push origin //push yapabiliriz
$ git remote add yenirepo https://github.com/mzkarakas/websitem.git
$ git remote -v
origin https://github.com/mzkarakas/websitem.git (fetch)
origin https://github.com/mzkarakas/websitem.git (push)
yenirepo https://github.com/mzkarakas/websitem.git (fetch)
yenirepo https://github.com/mzkarakas/websitem.git (push)
//bunu yaparak localdeki bir projeyi online birden fazla repoya yollayabiliriz.
$ git push origin master
Son yorumlar