git sürüm takibi

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

Upload: sadik-cetin

Post on 07-Jan-2017

351 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Git Sürüm Takibi

Sürüm Takibi

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

Page 2: Git Sürüm Takibi

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

[email protected]

Page 3: Git Sürüm Takibi

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

Page 4: Git Sürüm Takibi

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

Page 5: Git Sürüm Takibi

5

Neden Sürüm Takip Sistemi?

Kim ?

Ne Zaman ?

Ne Eklemiş/Çıkarmış?

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

Page 6: Git Sürüm Takibi

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

Page 7: Git Sürüm Takibi

7

Yerel Sürüm Takip Sistemleri

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

Örn. RCS

Page 8: Git Sürüm Takibi

8

Merkezi Sürüm Takip Sistemleri

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

SVN,CVS

Artılar?

Eksiler?

Page 9: Git Sürüm Takibi

9

Dağıtık Sürüm Takip Sistemleri

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

Örn. Git,Mercurial

Page 10: Git Sürüm Takibi

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ı

Page 11: Git Sürüm Takibi

11

Git Tarihçesi

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

Bitkeeper

2005

2002

Page 12: Git Sürüm Takibi

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

Page 13: Git Sürüm Takibi

13

Git Temel Kavramlar

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

● init● repository● clone● pull● push● branch● commit● .gitignore● HEAD

Page 14: Git Sürüm Takibi

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

Page 15: Git Sürüm Takibi

15

Git Akış Diagramı

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

Page 16: Git Sürüm Takibi

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

Page 17: Git Sürüm Takibi

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

Page 18: Git Sürüm Takibi

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

Page 19: Git Sürüm Takibi

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

Page 20: Git Sürüm Takibi

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

Page 21: Git Sürüm Takibi

21

Temel Git Komutları

Rebasing:

Yeniden temellendirme işlemidir.

$ git rebase <base>

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

Page 22: Git Sürüm Takibi

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

Page 23: Git Sürüm Takibi

23

Temel Git Komutları

Değişiklikleri Geri Alma-I:

$ git revert <commit_no>

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

Page 24: Git Sürüm Takibi

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

Page 25: Git Sürüm Takibi

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

Page 26: Git Sürüm Takibi

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

Page 27: Git Sürüm Takibi

27

Temel Git Komutları

$ git reset --hard <commit>

Tüm değişiklikler silinir.

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

Page 28: Git Sürüm Takibi

28

Temel Git Komutları

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

Page 29: Git Sürüm Takibi

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

Page 30: Git Sürüm Takibi

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

Page 31: Git Sürüm Takibi

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

Page 32: Git Sürüm Takibi

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

Page 33: Git Sürüm Takibi

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

Page 34: Git Sürüm Takibi

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.

Page 35: Git Sürüm Takibi

35

Uzak Depolama Servisleri

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

Page 36: Git Sürüm Takibi

36

Git için Araçlar-I

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

Tig

Page 37: Git Sürüm Takibi

37

Git için Araçlar-II

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

Gource

Page 38: Git Sürüm Takibi

38

Git için Araçlar-III

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

gitk

Page 39: Git Sürüm Takibi

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

SORUSUOLAN

?

Page 40: Git Sürüm Takibi

40

TEŞEKKÜ[email protected]

@SDK_CTN

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