Git
An intro to Git Source Control Management
Say what?
Source Control Management
like SVN, CVS,.. but better!
Linus Throvalds (april 2005)
Linux Kernel
Junio Hamano (july 2005)
a stupid person!
Ok, but why?
Offline
Distributed
Branching
Because it’s fucking fast, that’s why!
How git works     Offline

  world




                local
How git works       Distributed

   server


                           local




            local          local
How git works                   Branching

                      feature            commit


master   commit       commit     commit     merge



           feature   commit     commit
Repository

unstaged


    git add <files>


                           local                  remote
 staged
                        repository              repository
           git commit                git push
Our Workflow
git checkout -b cool_feature
do some fun code stuff, drink a mojito
git fetch master
git rebase origin/master
git checkout master
git merge cool_feature
Useful commands and files
git init     ‣ repository setup
git add      ‣ add files to queue for next commit
git commit   ‣ commit queued files
git push     ‣ push commit(s) to remote repository
git pull     ‣ fetch changes from remote repository
git clone    ‣ clone repository into a local directory

.gitignore   ‣ ignore specific files by adding them here
Cool features
Uhm.. Okay...
Cool features                            stash
 do some cool stuff
 git stash
 fix an irritating bug
 git commit -a -m “Farewell, you bug!”
 git stash apply
 do some more cool stuff
Cool features                            rebase
    fetch changes from another branch



                            feature     commit 3


master    commit 1          commit 2        commit 4
Cool features                              rebase
    fetch changes from another branch

                                               1234
                                 feature      commit 3


master    commit 1        commit 2         commit 4

                                                  124
Cool features                                  bisect
 Find the code change that introduced a bug


 git bisect start           ‣ start bisect session
 git bisect bad             ‣ mark current revision as bad
 git log                    ‣ search a working revision
 git bisect good revision   ‣ mark the working one as good
 git bisect good/bad        ‣ bisect until you find the bug
Cool features                         cherry-pick
 Apply a change from another commit into current branch


 git log                    ‣ search the right commit
 git checkout branch        ‣ checkout the branch you want
 git cherry-pick revision   ‣ apply commit into branch
GitNub
Git vs SVN
           Git                      SVN

      Distributed             Single Repository

       Branches                partial checkout

     Performance               Access Control

    Repository size        Shorter revision numbers
         Powerful,
                               more GUI tools
 little more complicated
git-svn
 using git local if you have a remote svn repository
   use git on your local machine
     staging
     seperate commits
     branches
   push your commits to your svn repository
Q&A
Useful resources
http://www.kernel.org/pub/software/scm/git/docs/
http://peepcode.com/products/git
https://github.com/
http://github.com/Caged/gitnub/tree/master
http://git.or.cz/gitwiki/GitSvnComparsion
About us


     Jeroen Jacobs & Jan De Poorter
     @jeroen_j & @defv
     Openminds

Git

  • 1.
    Git An intro toGit Source Control Management
  • 2.
    Say what? Source ControlManagement like SVN, CVS,.. but better! Linus Throvalds (april 2005) Linux Kernel Junio Hamano (july 2005) a stupid person!
  • 3.
    Ok, but why? Offline Distributed Branching Becauseit’s fucking fast, that’s why!
  • 4.
    How git works Offline world local
  • 5.
    How git works Distributed server local local local
  • 6.
    How git works Branching feature commit master commit commit commit merge feature commit commit
  • 7.
    Repository unstaged git add <files> local remote staged repository repository git commit git push
  • 8.
    Our Workflow git checkout-b cool_feature do some fun code stuff, drink a mojito git fetch master git rebase origin/master git checkout master git merge cool_feature
  • 9.
    Useful commands andfiles git init ‣ repository setup git add ‣ add files to queue for next commit git commit ‣ commit queued files git push ‣ push commit(s) to remote repository git pull ‣ fetch changes from remote repository git clone ‣ clone repository into a local directory .gitignore ‣ ignore specific files by adding them here
  • 10.
  • 11.
    Cool features stash do some cool stuff git stash fix an irritating bug git commit -a -m “Farewell, you bug!” git stash apply do some more cool stuff
  • 12.
    Cool features rebase fetch changes from another branch feature commit 3 master commit 1 commit 2 commit 4
  • 13.
    Cool features rebase fetch changes from another branch 1234 feature commit 3 master commit 1 commit 2 commit 4 124
  • 14.
    Cool features bisect Find the code change that introduced a bug git bisect start ‣ start bisect session git bisect bad ‣ mark current revision as bad git log ‣ search a working revision git bisect good revision ‣ mark the working one as good git bisect good/bad ‣ bisect until you find the bug
  • 15.
    Cool features cherry-pick Apply a change from another commit into current branch git log ‣ search the right commit git checkout branch ‣ checkout the branch you want git cherry-pick revision ‣ apply commit into branch
  • 16.
  • 17.
    Git vs SVN Git SVN Distributed Single Repository Branches partial checkout Performance Access Control Repository size Shorter revision numbers Powerful, more GUI tools little more complicated
  • 18.
    git-svn using gitlocal if you have a remote svn repository use git on your local machine staging seperate commits branches push your commits to your svn repository
  • 19.
  • 20.
  • 21.
    About us Jeroen Jacobs & Jan De Poorter @jeroen_j & @defv Openminds