38
HOGENT 14/04/16

Git Hogent

Embed Size (px)

Citation preview

Page 1: Git Hogent

HOGENT 14/04/16

Page 2: Git Hogent

WIE BEN IK?

Page 3: Git Hogent

BIO

▸Thomas Nys

▸1986

▸Hamme / Gent

WIE BEN IK?

Page 4: Git Hogent

PROFESSIONEEL

▸Ruby On Rails

▸Rialto (PropTech startup)

WIE BEN IK?

Page 5: Git Hogent

HOBBYS

▸Lezen

▸Ruby Belgium

▸Crossfit

▸Elixir

WIE BEN IK?

Page 6: Git Hogent

OVERZICHT

▸ Git history

▸ Git basics

▸ Commit messages

▸ Merge vs rebase

▸ Merge conflicts

▸ Workflow

▸ Git voodoo

▸ Git resources

Page 7: Git Hogent

GIT HISTORY

Page 8: Git Hogent

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

Page 9: Git Hogent

LINUS TORVALDS

▸Finse programmeur

▸Vader linux-kernel

▸Ontevreden met CVS

GIT HISTORY

Page 10: Git Hogent

NODEN

▸Performant

▸Gedistribueerd

▸Fout-tolerant

GIT HISTORY

Page 11: Git Hogent

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

Page 12: Git Hogent

GIT BASICS

Page 13: Git Hogent

SNAPSHOTS GEEN DELTAS

▸ Andere VCS’en == delta’s van een bepaalde basefile

▸ Git == stream van snapshots

GIT BASICS

Page 14: Git Hogent

ALLES LOKAAL

▸Gedistribueerd model

▸Snelheid!

▸Offline werken

GIT BASICS

Page 15: Git Hogent

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

Page 16: Git Hogent

3 STADIA

▸ Modified

▸ Gewijzigd maar niet opgeslagen

▸ Staged

▸ Klaargezet om te committen

▸ Cmmitted

▸ “Opgeslagen”

GIT BASICS

Page 17: Git Hogent

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

Page 18: Git Hogent

.GITIGNORE

▸ File met te negeren bestanden

▸ Typisch voor bestanden met gevoelige informatie of tijdelijke bestanden

▸ Repo basis: vb file met database-wachtwoorden

▸ Globaal hele systeem: vb. tmp-files typisch voor het OS

GIT BASICS

Page 19: Git Hogent

DEMO

GIT BASICS

Page 20: Git Hogent

COMMIT MESSAGES

Page 21: Git Hogent

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

Page 22: Git Hogent

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

Page 23: Git Hogent

MERGE VS REBASE

Page 24: Git Hogent

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

Page 25: Git Hogent

REBASE

▸ Iets geavanceerder

▸ Geen overbodige merge-commits

▸ Mooie lineaire geschiedenis

▸ Geschiedenis herschreven, niet gebruiker op publieke branches

MERGE VS REBASE

Page 26: Git Hogent

MERGE CONFLICTS

Page 27: Git Hogent

WANNEER?

▸ Wanneer eenzelfde lijn in eenzelfde bestand is aangepast in 2 branches.

▸ Wanneer een file in 1 branch verwijderd is maar in een andere gewijzigd.

MERGE CONFLICTS

Page 28: Git Hogent

DEMO

MERGE CONFLICTS

Page 29: Git Hogent

WORKFLOW (in kleine teams)

Page 30: Git Hogent

GITHUB

▸ Marktleider hosting git-repo’s

▸ Meeste open-source projecten zitten op git

GITLAB

▸ Evenwaardig maar kleiner

▸ Snelle progressie

▸ Kan sneller groeien door te leren uit fouten github

WORKFLOW

Page 31: Git Hogent

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

Page 32: Git Hogent

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

Page 33: Git Hogent

DEMO

WORKFLOW

Page 34: Git Hogent

GIT VOODOO

Page 35: Git Hogent

▸ git rebase -i

▸ git fixup & autosquash

▸ git bisect

▸ git cherry-pick

▸ git add -patch

▸ git add -i

▸ git reflog

▸ tig

▸ git-extras

GIT VOODOO

Page 36: Git Hogent

GIT RESOURCES

Page 37: Git Hogent

▸ Officië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

Page 38: Git Hogent

THX!Nog vragen?

Twitter: @nysthee Email: [email protected]