Git Sürüm Takip Sistemi

Embed Size (px)

Citation preview

Git Srm Takip Sistemizge Barbaros [email protected]

Konular

Srm Takip Sistemi Nedir?

Git Nedir?

Git'in zellikleri

Git'in Temelleri

Git Sunucu

Git Komutlar

Srm Takip Sistemi Nedir?
Neden umursamalyz?

Srm takibi bir dosyada veya dosya kmesinde yaplan deiikliklerin kaydn srmler halide tutmak ve sonrasnda bu gemi srmlere eriebilmek iin kullanlan bir sistemdir.

Srm takip sistemleri genellikle kaynak kodlar n takibi icin kullanlyor ama siz bilgisayarda bulunan herhangi bir dosya iin bunu yapabilirsiniz.

Resim, belge, sunum vs.

Srm kontrol her eyi bozduunuzda belgelerinizi en son dzgn haline geri alabilmenizi salar.

Yerel srm takip sistemi

rn: RCS

Merkezi Srm Kontrol Sistemi

Merkezi Srm Kontrol Sistemi

nsanlarn genellikle karlat dier bir sorun, ayn belge veya kod zerinde birden fazla kiinin ayn anda almas.

Bu problemi gidermek icin merkezi srm takip sistemleri kullanlmaktadr.

rn: CVS, Subversion, Perforce

Bu sistemlerde bir sunucu dosyalarn btn srmlerinin bulunduu depoyu barndrr ve istemciler buraya balanarak dosyalarn versionlarini kendi yerel makinalarina ceker.

Avantaj: Ynetimi kolay.

Dezavantaj: Single Point of Failure. Sunucu kapandnda kimse elindeki versiyonlanm dosyay hi bir yere yazamaz.

Datk Srm Takip Sistemi

Datk Srm Takip Sistemi

rn: Git, Mercurial, Bazaar veya Darcs

stemciler sadece son srm yerel makinalarna indirmez, ayn zamanda repo'nun bir aynasn kendi yerel makinalarnda barndrm olurlar.

Sunucu ldnde istemciler kendi makinalarnda almaya devam eder sonra sunucu ayaa kalktnda istemci deiiklikleri sunucuya uygular.

Avantaj:

Her istemci sunucunun kople yedei olur.

stemcilerin kendi aralarnda birlikte almalarna ve tepedeki hiyerariden bamsz kendi aralarnda farkl i aklar gereklemelerine yardmc olur.

Git Nedir?
Git'in zellikleri

Git,GPLv2 lisansl datk srm takip sistemidir.

Kk veya byk lekli her trl projede kullanlabilir, hzl ve salamdr.

Tarihesi: Linux ekirdeinin gelitiricileri nceleri ticari bir srm takip sistemi olan BitKeeper' kullanyorlard. Ticari yazlm olan BitKeeper'n Linux topluluu tarafndan cretsiz kullanmna son verilmesi zerine topluluk tarafndan yeni bir ara gelitirildi.

Yeni sistemin amaclarndan bazlar:HzBasit Tasarm

Dogrusal olmayan gelitirim icin gl destek (Paralel dallanmalar (branch))

Tamamen datk

Linux ekirdei gibi byk bir projenin verimli bir ekilde stesinden gelebilmesiBu amalarla 2005 ylnda Git srm takip sistemi oluturuldu.

Git'in Temelleri

Fark deil sistemin o anki durumunun bir resmini (snapshot) alr:

Git'in Temelleri

Neredeyse her ilem yerel makinede gerekleir. Boylece adan kaynaklanan yavasliktan kurtulur. Ornegin gemisi gormek iin aa bal olmaya gerek yoktur.

Btnlk Git'te nemlidir. Her ey kaydedilmeden nce checksum' alnr. Bylece siz degisikligi yaparken Git'in bundan haberdar olmasna gerek yoktur.

Git'e geri alnmas mmkn olmayan iler yaptrmak neredeyse imkanszdr. Sadece veri ekleme ilemi yapabilirsiniz.

Git'in Temelleri

Git aamadan oluur:

.git dizini: Git'in projeye ait stbilgileri ve nesne veritabann tuttuu dizindir. Bu dizin Git'in en nemli parasdr ve uzaktaki bir depodan klonladnz depolar buraya kopyalanr.

alma dizini: projenin bir srmnn tek bir kopyasdr ve bu dosyalar git dizini ierisindeki sktrlm veritabannn alm halidir ve siz zerinde alabilmeniz iin diskte yerini alr.

Staging alan: Git dizininde yer alan bir sonraki commit'te nelerin yer alacann bilgisini tutan dosyadr. Bazen index olarak adlandrlr ama genellikle staging alan denir.

Git Kurulumu: Linux

Ubuntu:# apt-get install git

Centos:# yum install git

Git Komutlar

Yeni bir proje oluturma$ git init deneme_proje # bu sadece kendimizin erisecegi ve uzerinde calisacagimiz proje$ git init --bare deneme_proje.git # Baskalar ile paylasilacak bir proje olusturmak icin bare komutunu kullaniyoruz ve bu tarz projeler .git ile bitmeli.

Olusturdugumuz veya daha nce mevcut bir projenin kopyasini alma:$ git clone git@ip_address:/home/git/deneme_proje.git deneme_proje

Yerel git kopyasndaki ayarlar$ git config --global user.name "Ozge Barbaros"$ git config --global user.email [email protected]: Bu yaplan commit'lerde gorunecek isim ve e-mail adresini belirtir.

Git Komutlar

Proje ierisinde degisiklik yaptktan sonra:$ git status # projede yaplan son degisiklikleri gosterir hangi dosyalarn eklenip hangilerin silindigini, hangilerinde deiiklik yapldn.$ git diff # bir nceki srm ile aradaki farklar gsterir.$ git add dosya_adi # yeni olusturulan dosyalar ve dizinleri depoya ekler.$ git commit -a -m Commit mesaji # yaplan degisikliklerin yerel repo'ya eklenmesi$ git push # son commitin uzaktaki repoya gonderilmesi.

Git Komutlar

Commit gemii:$ git log

Uzak repo'daki son degisikligi alma:$ git pull

Git Komutlar

Git Komutlar

$ git status -s

M README

MM Rakefile

A lib/git.rb

M lib/simplegit.rb

?? LICENSE.txt

Git Komutlar

Gormezden gelinecek dosyalar: .gitignore

# no .a files

*.a

# but do track lib.a, even though you're ignoring .a files above

!lib.a

# only ignore the TODO file in the current directory, not subdir/TODO

/TODO

# ignore all files in the build/ directory

build/

# ignore doc/notes.txt, but not doc/server/arch.txt

doc/*.txt

# ignore all .pdf files in the doc/ directory

doc/**/*.pdf

Git Komutlar

Dosya silme:$ rm dosya_adi$ git rm dosya_adi

Dosya tama/isim degisikligi:$ git mv file_from file_to

Son commit'e bireyler eklemek icin orn:$ git commit -m initial$ git add unutulan_dosya$ git commit --amend

Git komutlar

git reset HEAD CONTRIBUTING.md # staging'e eklenmi bir dosyay geri alma.

git checkout -- CONTRIBUTING.md # uzerinde duzenleme yapilmis dosyayi geri alma.

Kaynaklar

https://git-scm.com/doc