git & git workflows

Download Git & Git Workflows

Post on 11-Jan-2017

343 views

Category:

Software

2 download

Embed Size (px)

TRANSCRIPT

  • GIT & WORKFLOWSGIT, CENTRALIZED, FEATURE BRANCH, GITFLOW

  • GIT & GITWORKFLOWS

    * ae5be5a - (origin/master, master) GittiGidiyor/eBay (Haziran 2012) * 42964c4 - Octeth - Sendloop.com (Aralik 2010) * 0c7bd79 - CNT Bilisim Teknolojisi - Tamindir.com (Kasim 2007) * 523656c - Reklamarasi Advertising & Web Technologies (Eylul 2006)

    Senior Software Engineer at GittiGidiyor/eBay

    2006dan beri yazlm gelitiriyorum.

    Zend Certified Engineer - 2012

    KIVAN ERTEN - 1984 IZMIR

    tr.linkedin.com/in/kivancerten

    http://tr.linkedin.com/in/kivancerten

  • GIT BASICS

    WHAT IS GIT

    A Version Control System

    Linus Torvalds in 2005 (Linux Creator)

    Distrubuted, Local Repository support, Fast Speed, Strong support for branch based development.

    Everybody use git (Facebook, Eclipse, PHP, GittiGidiyor:)

  • GIT BASICS

    $ mkdir uberproject

    $ cd uberproject

    $ git init

    Initialized empty Git repository in /Users/kivanc/Projects/uberproject/.git/

    Bir repository yaratmak iin, herhangi bir dizinde git init komutunu altrmanz yeterlidir. Dizinin bo olmasna gerek yoktur.

    bare parametresi kullanldnda working directorysi olmayan bir repository yaratlr. Central repository bare repository olarak yaratlmas tercih edilir.

    git init

    git init --bare /dir/uberproject.git

    INITIALIZE REPOSITORY

    4

  • GIT BASICS

    REPO-TO-REPO COLLABORATION

    5

    Gitin alma sistemi repository den repository olacak ekilde dizayn edilmitir. Commit ler bir repository den dierine gnderilip - alnr.

  • GIT BASICS

    $ git clone https://github.com/kivancerten/php_game_of_life.git

    Cloning into 'php_game_of_life'...

    remote: Counting objects: 38, done.

    remote: Total 38 (delta 0), reused 0 (delta 0), pack-reused 38

    Unpacking objects: 100% (38/38), done

    git clone uzak repositoryi kopyalar. Clone ilemi, otomatik olarak uzak repository ile origin isminde bir balant yaratr.

    Eer bir proje halihazrda uzak bir repository de bulunuyor ise git clone, local gelitirmeye balamak iin en ok tercih edilen yntemdir.

    git clone

    CLONE A REPOSITORY

    6

  • GIT BASICS

    GIT CONFIG

    7

    Git config, git le ilgili tm konfigurasyonlarn yapld komuttur. Kullanc kimlik bilgisinden, varsaylan text editre kadar birok ayar bu komut ile yaplr.

    git config user.name Kivanc Erten"

    git config --global user.name Kivanc Erten"

    git config --global user.email kivanc@kivanc.com

    git config --system core.editor vim

    git config alias.st status

    /.git/config Repositorye zg ayarlar.

    ~/.gitconfig Kullancya zg ayarlar global parametresi kullanldnda buraya yazlr.

    $(prefix)/etc/gitconfig Sisteme zg ayarlar. system parametresi. O makinedeki tm repository ler iin geerli ayarlar.

  • GIT BASICS

    GIT AREAS : WORKING DIRECTORY - STAGE - REPOSITORY

    8

    Gitte dosyalarnzn olabilecei 3 farkl durum vardr. Modified, Committed, Staged.

    Committed : Deiikliklerin veritabanna kaydedilmi ve verinin gvenli olduu durum. Snapshot. Staged : Deiiklik yaplan dosyann bir sonraki commit ile kaydedilmek iin iaretlenmi olduu durum. Modified : Deiiklik yaplm ancak kaydedilmemi durum.

  • GIT BASICS

    SAVING CHANGES 1/2

    9

    git add komutu working directory deki deilikleri staging area ya tamaya yarar. Deiikliklerin bir sonraki commit de gncellenmesini istediimizi bu ekilde belirtiriz.

    git add git add

    $ git status

    # Untracked files:

    # (use "git add ..." to include in what will be committed)

    # test.txt

    $ git add test.txt

    $ git status

    # On branch master

    #

    # Initial commit

    #

    # Changes to be committed:

    # (use "git rm --cached ..." to unstage)

    #

    # new file: test.txt

  • GIT BASICS

    SAVING CHANGES 2/2

    10

    git commit komutu staging area daki deiikliklerin repositoryye kaydedilmesi iin kullanlr.

    Commit edilmi deiiklikler local repository de (veritaban da diyebiliriz) saklanr.

    Gitte delta deiiklikler deil snapshot lar tutulur. Her commit esiz bir SHA-1 hash codu ile git historysine kaydedilir.

    git commit #Commit mesaj girilmesi iin text editr aar

    git commit -a #Deiiklik yaplm tm dosyalar ekleyerek commit

    git commit -m #Commit mesaji belirtilerek commit.

    git commit -a m

    git commit ammend #Bir nceki commite deiiklik eklemek iin kullanlr.

  • GIT BASICS

    BRANCHING & REMOTE TRACKING

    11

  • GIT BASICS

    BRANCHING & REMOTE TRACKING

    12

  • GIT BASICS

    REMOTE BRANCHING

    13

  • GIT BASICS

    BRANCHING & REMOTE TRACKING

    14

  • GIT BASICS

    BRANCHING & REMOTE TRACKING

    15

  • GIT BASICS

    LOOKING THE REPOSITORY 1/2

    16

    git status komutu hangi dosyalarn, hangi durumda olduunu grmek iin kullanlr.

    Bu durumlar unlardr : staged, unstaged, untracked

    # Edit hello.php

    $ git status

    # hello.php is listed under "Changes not staged for commit"

    $ git add hello.php

    $ git status

    # hello.php is listed under "Changes to be committed"

    $ git commit

    $ git status

    # nothing to commit (working directory clean)

  • GIT BASICS

    LOOKING THE REPOSITORY 2/2

    17

    git log komutu daha nce commitlenmi snapshotlarn listelenmesi, filtrelenmesi ve aranmas iin kullanlr. Repositorynin gemiini gsteren bir listedir.

    git log

    git log -n

    git log --oneline

    $ git logcommit ae5be5af8f4a9808e94580a79a68ce36f59eb946Author: kivancerten Date: Mon Feb 3 10:03:30 2014 +0200

    Update Game.php

    commit 42964c4acc3f2848a703e5e4f3ca389bec755797Author: kivancerten Date: Mon Feb 3 09:59:52 2014 +0200

    Update Display.php

    commit 0c7bd79d07521923484c4766366860bf8279d4f9Author: kivancerten Date: Mon Feb 3 09:32:47 2014 +0200

    Update README.md

  • GIT BASICS

    BRANCHING & MERGING

    18

    Git birbirinden tamamen bamsz birok yerel branchiniz olmasna imkan salar. Bu branchlerin yaratlmas, birbirleri ile merge edilmesi ve silinmesi sadece saniyeler alr. Git bu ilemlerin yaplmasn olduka kolaylatrr.

    $ git checkout -b new-branch Switched to a new branch new-branch

    $ vim index.php

    $ git commit -am Kullanc verisi validasyonu eklendi" Created commit 670e353: Kullanc verisi validasyonu eklendi 1 files changed, 15 insertions(+), 1 deletions(-)

    $ git checkout master Switched to branch "master"

    $ git merge new-branch Updating e53ac7a..670e353 Fast forward index.php | 16 +++++++++++++++- 1 files changed, 15 insertions(+), 1 deletions(-)

  • GIT WORKFLOWS

    GIT WORKFLOWS

    19

    Centralized Workflow

    Feature Branch Workflow

    Gitflow

  • GIT WORKFLOWS

    CENTRALIZED WORKFLOW

    20

    Merkezi repository birisi tarafndan yaratlr.ssh user@host git init --bare /path/to/repo.git

    Gelitiriciler, projeyi merkezi repodan kendi alma ortamlarna git clone komutu ile download ederler.

    Git clone repositoryyi download ettikten sonra, origin adnda bir remote balant ile clone edilen central repository ile local repository arasnda ba oluturur.git clone ssh://user@host/path/to/repo.git

  • GIT WORKFLOWS

    CENTRALIZED WORKFLOW

    21

    Centralized Workflowu bir rnek zerinden aklamaya alalm.

    Ali ve Aye git clone komutu ile remote repositoryyi kendi alma ortamlarna download ederler.

    git clone ssh://user@host/path/to/repo.git

  • GIT WORKFLOWS

    CENTRALIZED WORKFLOW

    22

    Aye kendi gelitirmelerini yapp commit ler.

    Henz centralized repositoryye push etmez.

    git status # View the state of the repo

    git add # Stage a file

    git commit # Commit a file

  • GIT WORKFLOWS

    CENTRALIZED WORKFLOW

    23

    git status # View the state of the repo

    git add # Stage a file

    git commit # Commit a file

    Ali de kendi gelitirmelerini yapp commit ler.

    O da centralized repositoryye push etmez.

  • GIT WORKFLOWS

    CENTRALIZED WORKFLOW

    24

    Aye kendi yapt deiiklikleri central repositoryye gndermek ister ve git push komutunu kullanr.

    git push origin master

    origin in daha nce Ali ve Ayenin git clone komutu ile remote repositoryden projeyi download ederlerken oluan uzak balant olduunu unutmayalm.

    Aye projeyi git clone ile download ettiinden beri central repositoryde herhangi bir gncelleme olmadndan, git push komutu beklendii gibi alr. Herhangi bir conflict olmadan commitler local repository den central repositoryye gnderlilir.

  • GIT WORKFLOWS

    CENTRALIZED WORKFLOW

    25

    Ali kendi yapt deiiklikleri central repositoryye gndermek ister ve git push komutunu kullanr.

    git push origin master

    error: failed to push some refs to '/path/to/repo.git'

    hint: Updates were rejected because the tip of your current branch is behind

    hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')

    hint: before pushing again.

    hint: See the 'Note about fast-forwards' in 'git push --help' for details.

    ?Ali central repositorydeki deiiklikleri kendi local alma ortamna

    alabilmek iin iki ayr yaklamdan birini semek durumundadr.

    merge veya rebase

  • GIT WORKFLOWS

    CENTRALIZED WORKFLOW - REBASE

    26

    git pull --rebase origin master

    rebase parametresi Gite ilk nce centralized repositorydeki deiiklikleri locale almasn, ardndan Alinin yapt deiiklikleri bunlarn zerine eklemesini syler.

    Alinin deiiklikleri commit history de en son