git

git notlari

asagidaki notlar tamamen git console’u (bash) uzerine aciklamalar.
console uzerinden calismak istemeyenler icin SourceTree siddetle onerilir.


bazı dosya türlerini git repository’e almamak:

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

kaynak


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.

git_notlari


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.

kaynak


projedeki kodlarda değişiklik yapıldıysa ve bunları görmek istersek, farkları vermek icin:

(1) : git add . 
(2) : git diff --cached 

kaynak


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

fork etmek :

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

kaynak


commit ederken alt satıra geçmek icin: git commit –m “ilk satir” –m “ikinci satır”


Git status yazinca nelere cevap aliyoruz?

  • What did that command just do?
  • What branch am I on?
  • What changes am I about to commit, and have I forgotten anything?
  • Was I in the middle of something last time I worked on this project (days, weeks, or perhaps months ago)?

kaynak


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

kaynak


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