Git Sürüm Takibi

Preview:

Citation preview

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

info@sadikcetin.net

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 “info@sadikcetin.net”

$ 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

?

40

TEŞEKKÜRLERinfo@sadikcetin.net

@SDK_CTN

Özgür Yazılım ve Linux Günleri '16

Recommended