git sürüm takibi
TRANSCRIPT
Sürüm Takibi
Özgür Yazılım ve Linux Günleri '16
2
Hakkımda
Özgür Yazılım ve Linux Günleri '16
Sadık F. ÇETİN
Yazılım Mühendisi
@SDK_CTN
fb.com/ctnsdk
3
İçerik
● Sürüm Takibi Nedir?
● STS Çeşitleri
● Git
● Git Tarihçesi
● Git Kavramlar
● Temel Git Komutları
● Git Ayarları
● .git Dizini
● Uzak Depo Servisleri
● Git için Araçlar
Özgür Yazılım ve Linux Günleri '16
4
Sürüm Takibi Nedir?
Bir ya da daha fazla dosya üzerinde yapılan değişiklikleri,
● Kaydedebilmemize,● Geriye dönebilmemize
imkan sağlayan sistemlere denir.
Özgür Yazılım ve Linux Günleri '16
5
Neden Sürüm Takip Sistemi?
Kim ?
Ne Zaman ?
Ne Eklemiş/Çıkarmış?
Özgür Yazılım ve Linux Günleri '16
6
STS Çeşitleri Nelerdir?
● Yerel STS (Local) ● Merkezi STS (Centralized)● Dağıtık STS (Distributed)
Özgür Yazılım ve Linux Günleri '16
7
Yerel Sürüm Takip Sistemleri
Özgür Yazılım ve Linux Günleri '16
Örn. RCS
8
Merkezi Sürüm Takip Sistemleri
Özgür Yazılım ve Linux Günleri '16
SVN,CVS
Artılar?
Eksiler?
9
Dağıtık Sürüm Takip Sistemleri
Özgür Yazılım ve Linux Günleri '16
Örn. Git,Mercurial
10
Gelelim Git'e
Özgür Yazılım ve Linux Günleri '16
● Dağıtık Sürüm Takip Sistemi● GPL v2 ile Lisanslı● C,Tcl,Perl İle geliştiriliyor● Basit● Hızlı
11
Git Tarihçesi
Özgür Yazılım ve Linux Günleri '16
Bitkeeper
2005
2002
12
Git Kurulum
Fedora:
# yum install git-all
Ubuntu:
# apt-get install git-all
Arch Linux:
# pacman -S git
Özgür Yazılım ve Linux Günleri '16
13
Git Temel Kavramlar
Özgür Yazılım ve Linux Günleri '16
● init● repository● clone● pull● push● branch● commit● .gitignore● HEAD
14
Git Yapısı
Özgür Yazılım ve Linux Günleri '16Özgür Yazılım ve Linux Günleri '16Özgür Yazılım ve Linux Günleri '16
15
Git Akış Diagramı
Özgür Yazılım ve Linux Günleri '16
16
Temel Git Komutları
Yeni Depo:
$ mkdir simple-project && cd simple-project
$ git init
$ touch README.md
Depo Kopyalamak:
$ mkdir my-projects && cd my-projects
$ git clone <path>
Özgür Yazılım ve Linux Günleri '16
17
Temel Git Komutları
Staging:
$ git add <file> | git add .
Commit:
$ git commit -m “message” | git commit
Özgür Yazılım ve Linux Günleri '16
18
Temel Git Komutları
Durum Kontrolü:
$ git status
$ git log
working directory+ staging
local repository
Özgür Yazılım ve Linux Günleri '16
19
Temel Git Komutları
Branching İşlemleri:
$ git branch <branch_name>
$ git checkout -b <branch_name>
$ git branch <option>
$ git diff <branch_one> <branch_two>
$ git branch -D <branch_name>
Özgür Yazılım ve Linux Günleri '16
20
Temel Git Komutları
Merging:
Bir dalı başka bir dala birleştirme işlemidir.
$ git merge <branch_name>
Conflict ?
Özgür Yazılım ve Linux Günleri '16
21
Temel Git Komutları
Rebasing:
Yeniden temellendirme işlemidir.
$ git rebase <base>
Özgür Yazılım ve Linux Günleri '16
22
Temel Git Komutları
Checking Out İşlemleri:
$ git checkout <branch_name>
$ git checkout <commit_no>
$ git checkout <commit_no> <file>
Özgür Yazılım ve Linux Günleri '16
23
Temel Git Komutları
Değişiklikleri Geri Alma-I:
$ git revert <commit_no>
Özgür Yazılım ve Linux Günleri '16
24
Temel Git Komutları
Değişiklikleri Geri Alma-II:
$ git reset <option> <commit_no>
Opsiyonlar:
--soft
--mixed
--hard
(Sıfırlama)
Özgür Yazılım ve Linux Günleri '16
25
Temel Git Komutları
$ git reset --soft <commit>
Son Commit ile yapılan değişiklikler staging'te kalır.
Özgür Yazılım ve Linux Günleri '16
26
Temel Git Komutları
$ git reset --mixed <commit>
Son commit ile yapılan değişiklikler workspace'te kalır.
Özgür Yazılım ve Linux Günleri '16
27
Temel Git Komutları
$ git reset --hard <commit>
Tüm değişiklikler silinir.
Özgür Yazılım ve Linux Günleri '16
28
Temel Git Komutları
Özgür Yazılım ve Linux Günleri '16
29
Temel Git Komutları
Tagging:
$ git tag -a <tag> -m “tag commit”
$ git tag -l
$ git checkout <tag_name>
Özgür Yazılım ve Linux Günleri '16
30
Temel Git Komutları
Cherry Pick:
Belirli bir branchten bir commit'i almamizi saglar.
$ git cherry-pick <commit>
Özgür Yazılım ve Linux Günleri '16
31
Uzak Depo
Repository Eklemek:
$ git remote add <remote_repo_name> <adress>
SSH veya HTTP Protokolü Olabilir.
Özgür Yazılım ve Linux Günleri '16
32
Uzak Depo
$ git pull <remote_repo_name>
$ git push <remote_repo_name>
pull = fetch + merge
Özgür Yazılım ve Linux Günleri '16
33
Git Ayarları
$ git config --global user.name “Sadik F. Cetin”
$ git config --global user.mail “[email protected]”
$ git config --global core.editor vim
Özgür Yazılım ve Linux Günleri '16
--local (..../project/.git/config)--global (~/.gitconfig)--system (/etc/gitconfig)
$ git help config
34
.git Dizini
Özgür Yazılım ve Linux Günleri '16
Local Repository'nin bulunduğu dizindir.● Konfiürasyon dosyaları,● Log Dosyaları,● Git Objeleri,Yani local git veritabanı burada bulunur.
35
Uzak Depolama Servisleri
Özgür Yazılım ve Linux Günleri '16
36
Git için Araçlar-I
Özgür Yazılım ve Linux Günleri '16
Tig
37
Git için Araçlar-II
Özgür Yazılım ve Linux Günleri '16
Gource
38
Git için Araçlar-III
Özgür Yazılım ve Linux Günleri '16
gitk
39 Özgür Yazılım ve Linux Günleri '16
SORUSUOLAN
?