asagidaki notlar tamamen git console’u (bash) uzerine aciklamalar. console uzerinden calismak istemeyenler icin SourceTree siddetle onerilir.
Asagidaki dizinde exclude
isminde bir dosya var.
git/info/
Bu dosya içinde asagidaki satir olmasi lazım. Bu satirin anlami, .o uzantili dosyalari ve .a uzantili dosyalari repository’e alma demektir. .o uzantili dosyalar object dosyalari, .a uzantili dosyalar archicve dosyalari.
*.[oa]
Mesela asagidaki (1) satiri ile html uzantili dosyalari git repository’e almak istemiyoruz olalım. Fakat bu html dosyalarindan yasin.html isimli dosyayi diger html dosyalarindan farkli olarak git repository’e almak istiyor olalım. O zaman (2) satiri ile bu yasin.html dosyasını diger html dosyalarından farkli tutacak ve git repository’e dahil edebilecegiz.
(1) : *.html (2) : !yasin.html
sadece son commit’i gormek için:
git log -n1
son yapcommit’i degistirip tekrar push etmek icin:
git commit --amend -m "degistirilmis commit"
git push origin
asagida v02 ile taglanmis olan commit degistirildi. commit 2 editlendi. git log –all
komutu ile ekrana basilinca asagidaki gibi tum commit’ler ekranda gorunur. eger degistirilmis olan commit’in gorulmesi istenmiyorsa git log
(–all parametresi olmadan) yazmak yeterli.
eğer (1) satırı girince (2) satırındaki hata gelirse (3) ve (4) satırındaki kodlar arka arkaya girilir.
(1) : git remote add origin https://kullanici_adi@bitbucket.org/kullanici_adi/proje_adi.git
(2) : fatal: remote origin already exists.
(3) : git remote add test https://kullanici_adi@bitbucket.org/kullanici_adi/proje_adi.git
(4) : git push -u test master
cünkü (1) satırında girilen origin kelimesi remote repository’nin local’deki ismidir. biz (3) satırı ile buna test ismini verdik ve sonra da test ismindeki dizini push ettik. yani aslında origin kelimesi komutun bir parçası değildir.
projedeki kodlarda değişiklik yapıldıysa ve bunları görmek istersek, farkları vermek icin:
(1) : git add .
(2) : git diff --cached
local ve remote git kullanmayi gosteren guzel bir kaynak
eğer eski bir version’a geri dönülmek istenirse önce geri dönülmek istenen commit’in kodu öğrenilir.
git log
yukaridakinden sonra git bash’ine asagidaki gelecektir.
commit 4e5a9a1d24e3f99d02b8bd84e7f9568a21a72635
yukaridaki ilk 4 harfin koda girilmesi gerekir.
git checkout 4e5a
git’in ilk kurulumu sirasinda kullanici hakkında bilgiler girilmeesi: git config –global user.name “Scott Chacon” git config –global user.email “schacon@gmail.com”
git’teki tum configuration’lari listelemek icin
$git config --global –list
bu configuration’lari silmek icin
git config --global --unset-all user.name = "Scott Chacon"
git config --global --unset-all user.email = "schacon@gmail.com"
listelenen bu configuration’lari silmek ya da editlemek icin home folder’daki ~/.gitconfig
dosyasi editle
git log
yukarıdaki gibi bir komut girildiğinde ekrana sığmayan bir çıktı alınabilir. bu durumda tüm ekran çıktısı git.log.txt gibi bir metin dosyasına aşağıdaki yazdirma:
git log | cat >> git.log.txt
git console’unda ekrana gelen output’lar çok uzun olunca ekrana sığmama olabilir. bunu engellemek icin asagidaki girilir. (GIT_PAGER’dan sonra kullanılan tırnak çift tırnak değil, 2 tane tek tırnak)
GIT_PAGER='' git log
git log’u tek satırda görmek için :
git log --pretty=oneline
baskasının repository’sindeki dosyaları kendi repository’ne kopyalamaktır. ama hala remote’tasindir. dosyaları local’e çekmemişsindir. local’e çekmek de clone etmektir.
log gösterilirken yanında tag’ların da gösterilmesi istenirse
git log –-decorate
log gösterilirken tek satırda göster
git log –-oneline
hangi branch’ta olduğumuzu görmek için
git branch
bunun outputu olarak ekrana basılan satırlardan yeşil olan ve önünde * işareti olan, o an için içinde bulunulan dalı gösterir. dal oluşturup bu dala otomatik geçmek için
git checkout –b dal_ismi
commit yaptığımızı girdilere tag vermek için
git tag etiket_00
tüm etikekleri görmek için
git tag
tag’lara aciklama girmek için (-a : annotate’ten geliyor.) (aciklama girmek için ekran vim editor’une girer)
git tag –a tag_ismi
tag’larin aciklamalarini görmek için (-n1 degeri her tag’in ilk 1 satirini goster demektir.) git tag –l –n1
commit ederken alt satıra geçmek icin: git commit –m “ilk satir” –m “ikinci satır”
Git status yazinca nelere cevap aliyoruz?
Diyelim ki dosyalarda bazi degisiklikler yapildi fakat bu degisikliklerden memnun degiliz. Son commit’e donmek istiyoruz. Asagidaki komut ile donulebilir.
git reset -–hard
Bu komut checkout komutu gibi de kullanılabilir.
git reset --hard a8280952212
Bir klasoru git’ten hariç tutmak (exclude) için .gitignore
isminde gizli bir dosya olusturulur.
bu dosyanın içine hangi dizin hariç tutulmak isteniyorsa yazilir.
Mesela asd
ismindeki dizin haric tutulmak istenirse asd/
yaziliyor.
.gitignore
dosyasi .git dizini ile aynı dizinde olmali.
gitk ile grafiksel bir görünum saglanabiliyor. Komut satirina asagidaki yazilinca gerekli olan hersey bu grafik arayüzünden görülebiliyor.
gitk --all
fakat bu bilgisayardan cok fazla kaynak yiyor. Bunun önüne geçmek için asagidaki satir kullanilabilir:
git log –all
bu 2 yöntem ile de sadece HEAD (o an bulunulan commit) değil, tüm commit’ler yani tüm timeline görülebiliyor. Yani mesele –all parametresinde.
database compress için
git gc
eksi version’daki bir dosyayi sadece gostermek için (diff’ini göstermek ya da checkout ile eskiye döndürmek değil, sadece gostermek)
git show v00:Project/Standalone/httpserver/src/main.c
uzun komutlarin kisaltilmasi icin alias tanimlama :
git config --global alias.gl 'log --decorate --all --graph --oneline'
bundan sonra (1) satiri yerine sadece (2) satirini yazmak yeterli olacak:
(1) git log --decorate --all --graph –oneline
(2) git gl
bazi komutlar –dry-run
parametresini aliyor. dry run prova demek. yani komut calistirilmis olsa nasil bir sonuc verecegi ekrana basiliyor. yani asagidaki satir girilmis olsa
git clean -f --dry-run
asagidaki cikti ekrana gelebilir.
Would remove ornek_dosya