SlideShare a Scribd company logo
1 of 98
Download to read offline
Versiecontrole met Git
  Openminds TechTalk 14 september 2011
              @openminds
Wat

• Versiecontrole
• Team-tool
• Offline
git basis gebruik
            demo
 gitimmersion - lab 3 tot lab 10
git: drie statussen

• “unstaged” aanpassingen
• “staged” aanpassingen
• “committed” aanpassingen
Git: het geheim

• Git slaat wijzigingen op
• Het is geen snapshot van de files
• Het is een verzameling/opeenvolging van
  diffs
diffs, geen snapshots
diffs, geen snapshots
diffs, geen snapshots
diffs, geen snapshots




Een diff tussen 1 en 2
diffs, geen snapshots




Een diff tussen 1 en 2
diffs, geen snapshots




Een diff tussen 1 en 2
diff
git log
sha
2ec50a5390f93ee7a52e5ba9edcdaa28e9d5dc4c




88a7a694e6e4e91263bab2980b23d9d4aaceef89
Remotes
Remotes
git remote add origin git@gitserver.openminds.be:hello.git


    Joren

   Server
   (origin)
git push origin master

Joren


Server
git push origin master

Joren


origin
git push github master
 git remote add github git@github.com:hello.git


Joren


github
git pull origin master

Joren


origin
git pull origin master

Joren


origin
git clone

Bram


origin
git clone git@gitserver.openminds.be:hello.git



Bram


origin
Master


• hoofd-lijn
HEAD

• “vertrekpunt voor de volgende diff ”
• uw plaats in de boom
• ‘daar waar ge op aan het werken zijt’
• een bol
HEAD - master
   master-branch




                   HEAD
git checkout 567hj87
      master-branch




             HEAD
git checkout master
     master-branch




                      HEAD
Tags




v1      v1.1
Branches
Branches
Branches
Branches
Branches
Branches

           feature2
           master
           feature1
Branches


        demo
git immersion lab 24-28
Branches
       feature2




        master

   feature1
git checkout master



                HEAD
git checkout feature2


                 HEAD
git checkout gh6789j
HEAD
Merge
Merge
git merge feature1
git merge feature1



   merged feature1 into master
git merge feature1



         merged feature1 into master
Conflicten
master-branch
Conflicten
master-branch
Conflicten
master-branch



                 feature2-branch
Conflicten
Conflicten
git merge feature2
Conflicten
Rebase

                f   g
        e

a   b       c   d
git rebase feature1

                    f   g
            e

    a   b       c   d   e
git rebase feature1

                    f   g
            e

    a   b       c   d   e
git rebase feature1

                    f   g
            e

    a   b       c   d   e   f
git rebase feature1

                    f   g
            e

    a   b       c   d   e   f
git rebase feature1

                    f   g
            e

    a   b       c   d   e   f   g
git rebase feature1

                    f   g
            e

    a   b       c   d   e   f   g
git rebase master

                   f   g
           e

   a   b       c   d
git rebase master

                   e

   a   b   c   d
git rebase master

                   e

   a   b   c   d
git rebase master

                       f
                   e

   a   b   c   d
git rebase master

                       f
                   e

   a   b   c   d
git rebase master

                       f   g
                   e

   a   b   c   d
git rebase master

                       f   g
                   e

   a   b   c   d
Conflicten
Remotes
Remotes

joren

Server

bram

         HEAD
Remotes

joren

Server

bram            fetch

         HEAD
Pull


• eerst een fetch
• dan rebase of merge
Pull - rebase of merge

• kies maar
• rebase legt het probleem bij jouw changes
• merge moet je anderen hun changes
  aanpassen
Dagelijks gebruik
Normale werkdag

• git pull
• <werk>
• git push
Normaal <werk>
• (maak veranderingen - programmeer)
• git add
• git commit

• git rm
• git mv ...
Doh!

• van stage naar unstage:
                       git reset HEAD filename
• van commit naar niet-commit:
                                    git revert
Doh!

• unstaged wijzigingen weggooien
                         git checkout filename
• enkele commits weggooien
                       git reset --hard sha123
Extra’s
cherry-picking
cherry-picking
aliases configureren
     git immersion lab 11
.gitignore
submodules
bare / github / gitorious
git commit --amend
git bisect
boomstructuur en gc
git hooks
git send-email 5674h84hjks834
git stash
git stash pop
git add -i
git add -p hello.rb
git checkout branch --track remote/branch
git svn
GIT Immersion
http://www.gitimmersion.com
Pro Git
http://progit.org/book/
Git Cheat Sheet
http://www.cheat-sheets.org/saved-copy/git-cheat-sheet-large.png
Bedankt!
  www.openminds.be - @openminds
     Managed hosting services

Presentatie door @joren en @wonko_be

More Related Content

More from joren de groof (12)

Tatft
TatftTatft
Tatft
 
Something something rack
Something something rackSomething something rack
Something something rack
 
Validation
ValidationValidation
Validation
 
Testing
TestingTesting
Testing
 
Rubyandrails
RubyandrailsRubyandrails
Rubyandrails
 
Rails Servers
Rails ServersRails Servers
Rails Servers
 
Radiant
RadiantRadiant
Radiant
 
Prawn
PrawnPrawn
Prawn
 
Nanoc
NanocNanoc
Nanoc
 
Mistakes
MistakesMistakes
Mistakes
 
Git
GitGit
Git
 
Cucumber
CucumberCucumber
Cucumber
 

Git techtalk

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. naar de laatste commit van de master\n
  28. \n
  29. handig voor revisies, grote versies, werkpunten... er zijn lokale en gedeelde (annotated)\n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. je moet natuurlijk branches weer kunnen samenvoegen\n
  41. \n
  42. \n
  43. je bent de history van de commits wel niet kwijt, ook al delete je de branch\n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. git status\ngit commit -a\ngit status\n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. nu omgekeerd\nmaster rebase in de feature branch\n
  58. de feature branch diffs wordt opnieuw toegepast op het einde/HEAD van de master\n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. continue (na fix en add)\nskip \nabort (spoelt alles terug!)\n
  65. \n
  66. \n
  67. \n
  68. wij prefereren rebase\npull --rebase\nalgemene config\n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. git st, git co, git ci, git hist\n
  78. belangrijk, centraal en per project\n
  79. leuk bij frameworks voor modules of plugins\ngit repo in git repo\n
  80. \n
  81. \n
  82. goed en slechte commit aanduiden om zo de fout op te sporen\n
  83. goed en slechte commit aanduiden om zo de fout op te sporen\n
  84. hooks voor en na elke actie mogelijk in git\n
  85. \n
  86. code even wegsteken en weer ophalen\ngit stash list\ngit stash delete\n\n
  87. interactive - niet gui, wel hulp\n
  88. patch\n
  89. een remote branch koppelen aan een lokale branch \npfjoew...\n
  90. je kan migreren! geen reden meer om dat niet te doen!\n
  91. thank you edgecase - stap voor stap voor beginners tot medium\n
  92. free book! - get it!\n
  93. free book! - get it!\n
  94. \n