Git komutları notlar

$ git config --global user.name "John Doe"
$ git config --global user.email "john@doe.org"


git init = Bu klasör artık bir git reposudur. Gizli bir .git klasörü oluşturur.
git status = Bu klasör içerisindeki dosyaların repo’ya aktarılıp aktarılmadığını görebiliriz. Kırmızı ile belirtilen tüm dosyalar eklenmemiştir. Burada dikkat edilmesi gereken nokta .gitignore dosyasıdır eğer sisteminizde .gitignore dosyası var ise burada yer alan dosyalarınız her zaman repoya eklenmez. Bunu bir güvenlik olarak görebiliriz örneğin laravel’de env dosyasında veritabanı vb. şifreler yer aldığı için git reposuna dahil edilmemesi gerektiği .gitignore dosyasında belirtilmiştir. Böyle olunca kullanıcılara .env dosyası paylaşılmaz.
git add dosya.php = Sadece bir klasör veya dosya’yı repoya eklemek istediğimizde.
git add * = Burada * (yıldız) yerine . (nokta) ‘da kullanabiliriz. Tüm dosya ve klasörleri Repo’ya ekler. Bu kod bazı windows sistemlerinde çalışmama durumları olabilmektedir. bu gibi durumlarda git config core.autocrlf true bu kodu çalıştırıp daha sonra git add * çalıştırmalıyız.
git log = Bu repo’da daha önce commit işlemi yapılmış mı bunun kontrolünü sağlıyoruz.
git commit -m “Kurulum Yapıldı” = Bu kısımda git add * ile repomuza eklediğimiz dosya ve klasörlere bir sürüm tarzı bir sistem ekleyerek bir açıklama ile repo’yu ayırıyoruz. Bu ayarlamada ilk işlem sırasında bazı bilgiler isteyebilir bunları git config user.email “mail@adresiniz.com” ve git config user.name “Ad Soyad” girmeniz gerekmektedir. Bu işlem yapıldığında bir hata almaz iseniz git reposu belirlenmiş olacaktır.
git reset –hard * = Bu kod ile ilgili repo’ya geri dönüşümüze imkan sunacaktır, git log ile kontrol ettiğimiz  commit numarasını * yazan kısma yazdığımızda ilgili sürüme tek tıklama ile geri dönüş yapabiliriz.
git reset --hard HEAD: tüm değişiklikler silinir.

git branch v1.1 = Yeni bir branch oluşturduk.
git branch = Mevcut branch’leri kontrol ediyoruz. Yanında * olan branch kullandığınız branch’tir.
git checkout v1.1 = Artık v1.1 branch’imizde geliştirme yapıyoruz ve burada yaptığımız branch’ler v.1′ hiç bir şekilde bozmayacaktır. En temel anlamıyla düşünürsek v1 klasörünü kopyalayıp yapıştırdığımızda adını v1.1 yaparak v1.1 üzerinde düzenleme yapma gibi düşünebiliriz.
git merge v1.1 = Artık v1.1 geliştirmesini tamamlayıp tüm sistemi master branch’inde toplamak istediğimizde bu kodu kullanarak v1.1 branch’ini master branch’ine aktarıyoruz.
git branch -D v1.1 = v1.1 branch’ini siliyoruz.


# Two-step method
git branch NEW-BRANCH-NAME
git checkout NEW-BRANCH-NAME

//Yeni branch yarat ve remote'a gönder
git checkout -b test //test branchi oluşturup ona geçiş yapar.
git push -u origin test //branchi remote'a gönderir.

Bu sayfa ile artık mevcut local sistemimizde ki git’i github’a aktarabiliriz.
git remote add origin https://github.com/yusufkahramaner/repoismi.git = Üst kısımda belirtilen github linkini giriyoruz.
git push origin master = Master kısmı branch adımız. Bu işlem sırasında size kullanıcı adı ve şifre sorarak github senkronizasyonunu yapar.
git clone https://github.com/yusufkahramaner/repoismi.git = Github reposunu local’e çekmek için bu kodu kullanabiliriz.
git remote remove origin = Git veya bitbucket ile bağlantıyı koparır.



git init
git remote add origin https://gitlab.com/cem.elma/NetCoreApp.git
git add .
git commit -m "ilkkayit"
git status
git commit -am "ikinci kayıt" --Burada ek olarak kullandığımız a harfi kayıt işlemini yaparken bütün değişikliğe uğramış dosyaları da kayıta ekleyecektir.
git diff --yapılan değişiklikleri görme
git reset —hard HEAD --Projenizi en son kayıt yapılan haline döndürebilirsiniz.
git fetch origin --master branchini çeker.
git push -u origin master https://gitlab.com/cem.elma/NetCoreApp.git


# Commit tarihçesindeki en son 5 commit kaydının bilgilerini listeleyin
git log -n 5 

# Geri dönmek istediğiniz commit’in hash değerini belirledikten sonra

git revert <commit_hash_ilk_7_karakter> --no-edit

# Yerel deponuzu uzak depo ile senkronize edin
git push


*git --version	//Git versiyonu gösterir.

*git update-git-for-windows	//güncel git versionunun kurulmasını sağlar.

git status //hangi dosyaları değiştirdiğinizi, sildiğinizi veya hangi dosyaları eklediğinizi kolayca görebilirsiniz.

git log //Projeniz için oluşturduğunuz commit'lerin tarihçesini incelemek için kullanılır.

git push //uzaktaki repository’de yayınlama

ls -la //gizli dosylar dahil listeleme yapılır.

//SSH oluşturma
ssh-keygen -t rsa -b 4096 -C "cem.elma@cts.com.tr"
eval "$(ssh-agent -s)" //SSH-Agent in arkada çalışıp çalışmadığı kontrolü yapılır.
ssh-add ~/.ssh/id_rsa //oluşturulan ssh key sisteme eklenir.
cat ~/.ssh/id_rsa.pub // ssh key görüntülenir.

oluşturulan key git üzerinde ssh key olarak eklenir.
ssh -T git@gitlab.com //Remote ile local ssh bağlantısı kontrolü testi yapılır.

git clone //remote proje locale çekilir.

Not: Untracked (Takip Edilmeyen, henüz gite eklenmemiş ve versiyon kontrolü altında olmayan dosyalardır), Tracked (Takip Edilen) dosyalardır.
Değişiklikler working folder(working copy), uzak sunucu ve Staging Area'da tutulur.
Staging Area'yı, proje dosyalarımızdaki bir dizi değişikliği remote repository'ye göndermeden önce kayıt altında tuttuğunuz veri tabanı/alan olarak tanımlayabiliriz.

git add baslik_2.md baslik_2_1.md resimler/*	//baslik_2.md ve baslik_2_1.md dosyaları ile resimler klasörü altındaki tüm dosyaların Staging Area'ya eklenmesini sağlayabiliriz.
git commit -m "1.7 numaralı alt başlık içeriği tamamlandı"

git checkout app/screens/LeaveList/index.js //son staging area bilgisine geri dönülür.
git restore app/screens/Login2/index.js


index.js değişiklik yapılır.
git add app/screens/LeaveList/index.js // Stage'a eklenir
git reset app/screens/LeaveList/index.js // Stage geri alınır.
git checkout app/screens/LeaveList/index.js // Değişiklik geri alınır.

git revert commitnumber

git reset --hard HEAD~1 //bir önceki commite döner ve son commiti siler.
git reset –hard Son gönderiye geri almak. Eğer birleştirme sonucu çakışmalar çıktı ise ve bu çakışmayı geri almak istiyorsanız bu kodu kullanabiliriz.

git reset –hard ORIG_HEAD veya git reset –hard origin/master En son birleştirilmiş stabil duruma geri döndürür. Daha yeni birleştirme işleri için kullanışlıdır. Eğer birleştirme işinizde çakışma varsa “git reset –hard” kullanınız.

git reset –soft HEAD^ Son gönderinizde bazı şeyleri unuttunuz mu? Bu durumdan kurtulmak kolay. Son gönderiyi geri almak istiyorsak ve yapılan değişikliklerinde bir yerlerde saklanmasını istiyorsak bu komutu kullanmalıyız.

git commit –amend Yaptığınız değişiklikleri koruyarak önceki gönderiyi yenilemek istiyorsak bu komutu kullanırız. Ayrıca önceki gönderi mesajını yenilemek içinde kullanılır bu komut.

git checkout – <dosya_adi> Sadece belirtilen dosyayı geri almak için kullanılır.

git restore --staged app/screens/LeaveList/index.js // stagedan dosya geri alınır.
git restore app/screens/LeaveList/index.js //dosya localdende geri alınır.
git reset --hard HEAD~1 //bir önceki commite döner ve son commiti siler.

//istenilen commite dönülür ve ilerisi silinir.
git reset --hard <last_working_commit_id>
git push --force

git reset HEAD^ --hard 

git branch -v: branchleri son commit


Yanlış dosyayı git add ile ekledim ne yapmalıyım?
git reset HEAD readme.md

En son commit’i nasıl geri alırım?
git add .
git commit -m "Ceviz Ekle"
git revert HEAD
Bunu yaptığınız da editörünüz açılacak ve sizden bir commit mesajı girmenizi isteyecektir. Ve en son committe yaptığımız değişikleri geri alan yeni bir commit oluşturacaktır.
Çıktıdan anladığımız kadarıyla revert komutu, aslında gerçek anlamda geri alma işlemi yapmıyor, aksine bir commitin etkilerini geri alan yeni bir commit oluşturuyor

git reset
Şimdi senaryomuza geri dönelim ve lokal branchta çalışırken revert’in oluşturduğu ekstra committen duyduğumuz memnuniyetsizlikle son commit’i geri alalım.
git reset HEAD~1


git stash //devam eden bir işi yarıda bırakıp farklı bir işe geçtiğimizde stashe kaydedebiliriz.
git stash list //ekli olan stashler listelenir.
git stash apply stash{0} //stashe geçiş yapılabilir.
git reset --hard HEAD~1 //stashsiz hale dönülebilir ve tanımlı başka stashe geçilebilir.
git stash pop // yukarıdaki listenin en üstünde yer alan değişiklik geri yüklenecek ve bu değişiklik listeden silinecek.
git stash drop stash@{1} // stash silinir.

git reset -–hard origin/master //masterdan son hali alır.

git add app/screens/LeaveList/index.js // stashe ekleme yapılır.
git reset HEAD app/screens/LeaveList/index.js // stashe eklemesi unstash yapılır.

git revert HEAD // son commite dönülür.
git revert --abort //Dönülen son commit iptal edilir.
git revert --continou revert commiti kabul edilir.
git commit --amend -m "cem commit mesaji düzenlendi." //son commit mesajiını düzenlemek için kullanılır.

//SON YAPILAN COMMITE EK YAPMAK İÇİN;
git add bar.md
git commit --amend --no-edit
git status

Git, bizim için yaptığımız işlemlere referans kaydı tutuyor. Yukarıda revert komutunu geri alırken kullandığımız gibi. git reflog ile HEAD@{n} ‘i takiben yapılan işlemle de ilgili açıklamalar. Tarihten bu kesitlere istediğiniz gibi ışınlanabilirsiniz tek yapmanız gereken git reset HEAD@{n} ile istediğiniz noktaya gidebiliriz.
git reset HEAD@{1} //


git show 6cb87924dc57 // Committe yapılan değişiklikler görüntülenir.
git show 6cb87924dc57 --stat // Committe yapılan değişiklikler sadece dosya adları görünür, içeriksiz.
git log -p 6cb87924dc57 040b42bd78bb3 //iki commit farkları

VİM EDITOR KAPAMA;
"Esc" + ":wq!" YADA "Esc" + ":q!"


git checkout master //komutu ile değişikliklerin aktarılacağı hedef branch'inizi aktif (HEAD) hale getirirsiniz.
git merge loginsorunu //komutu ile kaynak branch'deki commit edilmiş değişiklikler HEAD'e entegre edilir.


git init //git projesi eklenir.
git clone //git projesi çekilir.



git checkout -b Cem developer
git push origin Cem
git push origin --delete Cem //-D silmeye zorlar, -d siler.
git checkout -- . //bütün değişiklikleri siler.
git reset --hard UID : dosyanlarin eski halini de orjinal haline ceviriyor, kalıcı silinir commitler ve dosyalar.
git reset --soft UID : Git bu belirttiğimiz commiti ve sonrasındaki commitleri silecektir, düzenlenmiş dosyalar da Git’e eklenmiş hale gelecektir. Dosyalardaki değişiklikler bozulmayacaktır. Sadece commit silinir dosyalar localde kalır.
git reset --mixed UID : belirttiğimiz commiti ve sonrasındaki commitleri silecektir. Dosyalarımızdaki değişiklikler gitmeyecek ancak dosyalarımız Git’e eklenmemiş olacaktır, yani untracked hale gelecektir.
git commit --amend : reset ettikten sonra dosyalardaki degisikligi yapip yeniden ADD etmek lazim. ADD yaptiktan sonra bir commit gondermek yerine eski commit uzerine yaz diyebiliriz. amacimiz show log diyince yaptigimiz duzeltmenin gereksiz yere log da gorunmemesi idi. bunun icin git commit --amend yazmamiz yeterli.
git branch -v : Detayli olarak branchleri listeler.

git config --global alias.s status <- git komutunu alias yaptik artik git s yazinca git status calisacak ayarlar kullanicinin home directorysinde duruyor, vim ~/.gitconfig yazarak incelenebilir (hic alias yapilmamis ise boyle bi dosya yoktur, ilk basta birseyleri alias yap) bu dosyayi direk olarak editleyerek de alias eklenebilir. veya ilgili satirlari silerek aliaslar silinebilir.
git config --global -unset alias.s <- boyle manuel de silebiliriz.

ep 08 : stash
git stash <- bu komut ile o andaki dosyalari stahse atiyoruz.
git stash list <- tum shash yaptiklarimiz gorebiliriz. dosyalari degil sadece stash yaparak kaydettiklerimizi
git stash pop ve git stash apply <- stashe atilanlari geri cagiriyoruz. pop yazinca stash listden de siliyor.
git stash drop <- bunu yazincada stash lisri siliyor.

eger komutlarin sonuna stash id yazmazsak en son stash icin gecerli islemler. yok yazarsak sadece o yazdigimiz stash id icin islem yapiyor.
stash id degeri list yapinca 2 noktadan onceki string. su sekilde mesela: stash@{0}

stash yaptigimiz branchi silsek bile bir baska branchde git stash appyl falan yaapabiliriz. yyada yeni bir bbracnh acip ona stash edebiliriz.
git stash branch deneme <-- yeni bir branch acar deneme adinda ve orada stashi appy eder.

git pull origin developer //değişikliklerin branche alınmasını sağlar.
git fetch // uzaktaki verileri indirir fakat çalışma alanındaki veriler üzerine yazılmaz, git pullda ise remotedan çekilen veriler otomatik git merge gibi çalışır

Git Komutları

Yazılım projelerinde en büyük sorunlardan biri, kodlama yaptığınız sayfaları, -özellikle proje yöneticiniz titiz bir şekilde inceliyorsa- paylaşma ve kontrol edilmesi için yollama kısmında yaşanıyor. Çoğu zaman 1 proje üzerinde birden fazla coder çalıştığından, coder’ların gönderdiği sayfaları birbiri üzerine kaydedilip büyük problemlere yol açıyor.

git clone gityolu = repoyu locale çekmek için kullanılır.
ls = kalsörleri gösterir
git status = proje üzerindeki yapılan değişikliklerin durumu gösterir.
git add . = yapılan değişiklikleri localdeki gite ekler.
git commit -am “test” = commiti notuyla ekler.
git remote -v = githubdaki branchleri gösterir.
git branch = local repodaki brach listesini gösterir.
git branch -a = github reposundaki brach listesini gösterir.
git branch -D cem //localdeki branchi siler.
git checkout -b cem = Yeni branch yaratır.
git remote add cem = Yeni branchi repoya yazar.
git checkout -b cem origin/cem = repodaki oluşturulmuş branchi locale çeker.
git checkout cem = cem branchine geçiş yapar.
git checkout master = master branchine geçiş yapar
git checkout -f = commit edilmemiş fakat,değişiklik yapılmışsa değişiklikleri geri alır.
git log = yapılan commitleri gösterir
git rebase -master = masterdaki değişiklikleri geçerli branche alır.
git pull = yapılan değişiklikleri locale çeker
git push= yapılan değişiklikleri,commitleri repoya gönderirir.
gitk = dahili git GUI (Grafiksel Kullanıcı Arayüzü)