際際滷

際際滷Share a Scribd company logo
HOGENT 14/04/16
WIE BEN IK?
BIO
Thomas Nys
1986
Hamme /
Gent
WIE BEN IK?
PROFESSIONEEL
Ruby On Rails
Rialto
(PropTech
startup)
WIE BEN IK?
HOBBYS
Lezen
Ruby Belgium
Cross鍖t
Elixir
WIE BEN IK?
OVERZICHT
 Git history
 Git basics
 Commit messages
 Merge vs rebase
 Merge con鍖icts
 Work鍖ow
 Git voodoo
 Git resources
GIT HISTORY
I'M DOING A (FREE) OPERATING SYSTEM
(JUST A HOBBY, WON'T BE BIG AND
PROFESSIONAL LIKE GNU) FOR 386(486)
AT CLONES.
Linus Torvalds, 25-08-1991
GIT HISTORY
LINUS TORVALDS
Finse programmeur
Vader linux-kernel
Ontevreden met
CVS
GIT HISTORY
NODEN
Performant
Gedistribueerd
Fout-tolerant
GIT HISTORY
BITKEEPER
 Gratis voor Linux-maintainers (niet opensource)
 Iemand probeert Bitkeeper te reverse
engineeren
 Bitkeeper stopt met Linux te steunen
 April 2005 gestart met eerste versie git
GIT HISTORY
GIT BASICS
SNAPSHOTS GEEN DELTAS
 Andere VCSen
== deltas van
een bepaalde
base鍖le
 Git == stream van
snapshots
GIT BASICS
ALLES LOKAAL
Gedistribueerd model
Snelheid!
Of鍖ine werken
GIT BASICS
GIT == DATA-INTEGRITEIT
 Alles in git gechecksummed met SHA-1
hash naar een hexadecimale string van 40
karakters
 Elke wijziging opspoorbaar
 Alles is omkeerbaar
GIT BASICS
3 STADIA
 Modi鍖ed
 Gewijzigd maar niet opgeslagen
 Staged
 Klaargezet om te committen
 Cmmitted
 Opgeslagen
GIT BASICS
BRANCHING
Branch is een snapshot van de situatie
op het moment waar de branch
afgetakt is
Branch is letterlijk een aftakking
Je kan branchen op een branch
GIT BASICS
.GITIGNORE
 File met te negeren bestanden
 Typisch voor bestanden met gevoelige informatie of
tijdelijke bestanden
 Repo basis: vb 鍖le met database-wachtwoorden
 Globaal hele systeem: vb. tmp-鍖les typisch voor het OS
GIT BASICS
DEMO
GIT BASICS
COMMIT
MESSAGES
7 REGELS VOOR EEN GOEDE COMMIT MESSAGE
1. Hou onderwerp en body gescheiden met 1 witregel
2. Beperk de lengte van het onderwerp tot 50 karakters
3. Het onderwerp begint met een hoofdletter
4. Gebruik geen punt op het einde van het onderwerp
5. Gebruik de gebiedende wijs in het onderwerp
6. Beperk de breedte van de body to 72 karakters
7. Geef in je body een uitleg voor wat en waarom, niet over hoe
COMMIT MESSAGES
MEER OVER COMMIT MESSAGES
 Een rant van Linus Torvalds over commit-messages:
 https://github.com/torvalds/linux/pull/
17#issuecomment-5659933
 Blogpost die dieper ingaat op deze 7 regels:
 http://chris.beams.io/posts/git-commit/
COMMIT MESSAGES
MERGE VS
REBASE
MERGE
 Makkelijkst
 Laat de geschiedenis as
is
 Extra commit iedere
keer changes van master
worden gemerged
 Geeft een heel slordige
git-history
 Minder geschikt voor
team-werk
MERGE VS REBASE
REBASE
 Iets geavanceerder
 Geen overbodige
merge-commits
 Mooie lineaire
geschiedenis
 Geschiedenis
herschreven, niet
gebruiker op publieke
branches
MERGE VS REBASE
MERGE
CONFLICTS
WANNEER?
 Wanneer eenzelfde lijn in eenzelfde bestand is aangepast
in 2 branches.
 Wanneer een 鍖le in 1 branch verwijderd is maar in een
andere gewijzigd.
MERGE CONFLICTS
DEMO
MERGE CONFLICTS
WORKFLOW
(in kleine teams)
GITHUB
 Marktleider hosting git-repos
 Meeste open-source projecten zitten op git
GITLAB
 Evenwaardig maar kleiner
 Snelle progressie
 Kan sneller groeien door te leren uit fouten github
WORKFLOW
BASICS
 Master == productie-code
 Nooit pushen naar master !!!
 Iedereen branched op master
 Indien feature:
 branchnaam: feature/coole-feature
 Indien bug:
 branchnaam: bug/het-is-kapot
WORKFLOW
CODE TERUG NAAR MASTER
 Indien de feature/bug klaar > PR op Github
 Rebasen met master (changes in master naar branch brengen)
 Wordt toegewezen aan iemand van het team en nagekeken
 Code review is een leerrijk proces en geen ego-kwestie
 Jij bent je code niet
 Stijl en syntax automatisch laten checken (voorkomt al heel wat ego-zaken)
 Zorg voor een ci die automatisch testen loopt en zo al een eerste vorm van
feedback geeft, testen falen == probleem
 Indien ok de pull-request gemerged en automatisch een deploy naar productie
WORKFLOW
DEMO
WORKFLOW
GIT VOODOO
 git rebase -i
 git 鍖xup & autosquash
 git bisect
 git cherry-pick
 git add -patch
 git add -i
 git re鍖og
 tig
 git-extras
GIT VOODOO
GIT RESOURCES
 Of鍖ci谷le documentatie:
 https://git-scm.com/
 Podcast
 https://www.briefs.fm/git-tips
 Interactieve cheatsheet:
 http://ndpsoftware.com/git-cheatsheet.html
 Tutorial:
 https://www.atlassian.com/git/tutorials/
 Meer info over .git-folder
 https://medium.freecodecamp.com/understanding-git-for-real-by-
exploring-the-git-directory-1e079c15b807#.gmhespqdy
THX!
Nog vragen?
Twitter: @nysthee
Email: nysthee@gmail.com

More Related Content

Git Hogent

  • 6. OVERZICHT Git history Git basics Commit messages Merge vs rebase Merge con鍖icts Work鍖ow Git voodoo Git resources
  • 8. I'M DOING A (FREE) OPERATING SYSTEM (JUST A HOBBY, WON'T BE BIG AND PROFESSIONAL LIKE GNU) FOR 386(486) AT CLONES. Linus Torvalds, 25-08-1991 GIT HISTORY
  • 9. LINUS TORVALDS Finse programmeur Vader linux-kernel Ontevreden met CVS GIT HISTORY
  • 11. BITKEEPER Gratis voor Linux-maintainers (niet opensource) Iemand probeert Bitkeeper te reverse engineeren Bitkeeper stopt met Linux te steunen April 2005 gestart met eerste versie git GIT HISTORY
  • 13. SNAPSHOTS GEEN DELTAS Andere VCSen == deltas van een bepaalde base鍖le Git == stream van snapshots GIT BASICS
  • 15. GIT == DATA-INTEGRITEIT Alles in git gechecksummed met SHA-1 hash naar een hexadecimale string van 40 karakters Elke wijziging opspoorbaar Alles is omkeerbaar GIT BASICS
  • 16. 3 STADIA Modi鍖ed Gewijzigd maar niet opgeslagen Staged Klaargezet om te committen Cmmitted Opgeslagen GIT BASICS
  • 17. BRANCHING Branch is een snapshot van de situatie op het moment waar de branch afgetakt is Branch is letterlijk een aftakking Je kan branchen op een branch GIT BASICS
  • 18. .GITIGNORE File met te negeren bestanden Typisch voor bestanden met gevoelige informatie of tijdelijke bestanden Repo basis: vb 鍖le met database-wachtwoorden Globaal hele systeem: vb. tmp-鍖les typisch voor het OS GIT BASICS
  • 21. 7 REGELS VOOR EEN GOEDE COMMIT MESSAGE 1. Hou onderwerp en body gescheiden met 1 witregel 2. Beperk de lengte van het onderwerp tot 50 karakters 3. Het onderwerp begint met een hoofdletter 4. Gebruik geen punt op het einde van het onderwerp 5. Gebruik de gebiedende wijs in het onderwerp 6. Beperk de breedte van de body to 72 karakters 7. Geef in je body een uitleg voor wat en waarom, niet over hoe COMMIT MESSAGES
  • 22. MEER OVER COMMIT MESSAGES Een rant van Linus Torvalds over commit-messages: https://github.com/torvalds/linux/pull/ 17#issuecomment-5659933 Blogpost die dieper ingaat op deze 7 regels: http://chris.beams.io/posts/git-commit/ COMMIT MESSAGES
  • 24. MERGE Makkelijkst Laat de geschiedenis as is Extra commit iedere keer changes van master worden gemerged Geeft een heel slordige git-history Minder geschikt voor team-werk MERGE VS REBASE
  • 25. REBASE Iets geavanceerder Geen overbodige merge-commits Mooie lineaire geschiedenis Geschiedenis herschreven, niet gebruiker op publieke branches MERGE VS REBASE
  • 27. WANNEER? Wanneer eenzelfde lijn in eenzelfde bestand is aangepast in 2 branches. Wanneer een 鍖le in 1 branch verwijderd is maar in een andere gewijzigd. MERGE CONFLICTS
  • 30. GITHUB Marktleider hosting git-repos Meeste open-source projecten zitten op git GITLAB Evenwaardig maar kleiner Snelle progressie Kan sneller groeien door te leren uit fouten github WORKFLOW
  • 31. BASICS Master == productie-code Nooit pushen naar master !!! Iedereen branched op master Indien feature: branchnaam: feature/coole-feature Indien bug: branchnaam: bug/het-is-kapot WORKFLOW
  • 32. CODE TERUG NAAR MASTER Indien de feature/bug klaar > PR op Github Rebasen met master (changes in master naar branch brengen) Wordt toegewezen aan iemand van het team en nagekeken Code review is een leerrijk proces en geen ego-kwestie Jij bent je code niet Stijl en syntax automatisch laten checken (voorkomt al heel wat ego-zaken) Zorg voor een ci die automatisch testen loopt en zo al een eerste vorm van feedback geeft, testen falen == probleem Indien ok de pull-request gemerged en automatisch een deploy naar productie WORKFLOW
  • 35. git rebase -i git 鍖xup & autosquash git bisect git cherry-pick git add -patch git add -i git re鍖og tig git-extras GIT VOODOO
  • 37. Of鍖ci谷le documentatie: https://git-scm.com/ Podcast https://www.briefs.fm/git-tips Interactieve cheatsheet: http://ndpsoftware.com/git-cheatsheet.html Tutorial: https://www.atlassian.com/git/tutorials/ Meer info over .git-folder https://medium.freecodecamp.com/understanding-git-for-real-by- exploring-the-git-directory-1e079c15b807#.gmhespqdy