Git for the win!

36
git for the win! 2015 - Denver Sessink

Transcript of Git for the win!

Page 1: Git for the win!

git for the win!

2015 - Denver Sessink

Page 2: Git for the win!

git != GTI

Page 3: Git for the win!

Wat gaan we bespreken?

● Wat en waarom?● Verschillende VCS systemen● Git basics en gedachtengang● Git branching / merging● Onze werkwijze

Page 4: Git for the win!
Page 5: Git for the win!

Waarom versiebeheer….

Page 6: Git for the win!

Ooit een wijziging in code terug willen draaien?

Page 7: Git for the win!

Ooit code verloren of een back-up gehad die te oud was?

Page 8: Git for the win!

Hoe gaan we meerdere versies van een product handhaven?

Page 9: Git for the win!

Ooit het verschil willen zien tussen twee code files?

Page 10: Git for the win!

En met 2+ programmeurs tegelijk aan hetzelfde project werken?

Page 11: Git for the win!

Wat?

VCS (Version Control System)

Wijzigingen bijhouden in een logboek

Werkt het beste voor tekstfiles (code!)

Page 12: Git for the win!

Distributed vs Centralized

Centralized

Subversion

Distributed

Git

Page 13: Git for the win!

Distributed vs Centralized

Page 14: Git for the win!

Wat is Git?

Git is een distributed version control (dvcs) en source code management (scm) systeem, gericht op snelheid, data integriteit en niet-lineaire workflows.

Page 15: Git for the win!

Wat is Git?

Page 16: Git for the win!

Git is...

● Snel!● Simpel (in de basis :p)● Stabiel en robuust (easy 1000+ branches)● SFully distributed

○ Volledige lokale repository○ Offline commits

Page 17: Git for the win!

git is dus toch een beetje GTI ;-)

Page 18: Git for the win!

Maar...

● Alle gecommitte bestanden blijven altijd in IEDERE clone!

● Git kent geen lege mappen● Zonder genoeg basiskennis is kan het een

b*tch zijn

Page 19: Git for the win!

Iets de diepte in...

… please!

Page 20: Git for the win!

Termen...

WorkspaceWorking directoryCloneIndexRepositoryBranche

CommitPullPushMerge….

Page 21: Git for the win!
Page 22: Git for the win!

In commando’s...~ mkdir projectmapje

~ cd projectmapje

~ git init

// lekker index.php maken en code typen

~ git add index.php

~ git commit -m “Eerste versie homepage gemaakt”

~ git push

Page 23: Git for the win!

In commando’s...~ cd projectmapje-met-git

~ git pull

// lekker index.php wijzigen

~ git commit -m “Tweede versie homepage gemaakt”

~ git pull

~ git push

Page 24: Git for the win!

Branches...

aftakkingen dus

Page 25: Git for the win!

Master vs develop

Git heeft altijd tenminste 1 branche: master

Wij gebruiken altijd twee branches:1. master → voor live-omgeving2. develop → voor acceptatie-omgeving

Page 26: Git for the win!

Wijziging doen in feature branch...~ cd projectmapje-met-git

~ git pull

~ git branch -b feature/nieuwe-modelpagina-208

~ git checkout feature/nieuwe-modelpagina-208

// lekker nieuwe modelpagina.html maken

~ git add modelpagina.html

~ git commit -m “Nieuwe modelpagina van de 208”

Page 27: Git for the win!

Wijziging op acceptatie zetten...~ cd projectmapje-met-git-feature

// dus de map met die nieuwe modelpagina.html

~ git checkout develop

~ git merge feature/nieuwe-modelpagina-208

~ git push origin develop

Page 28: Git for the win!

Onze werkwijze

Git + Cloud + Deployments

Page 29: Git for the win!

Git + Cloud + Deployments

Ieder project een eigen git repositoryGit repositories in de cloud bij BeanstalkIedereen heeft Beanstalk als remote (of origin)Iedereen pusht uiteindelijk naar BeanstalkBeanstalk kan branch-specifiek deployen

Page 30: Git for the win!

Git + Cloud + Deployments

Beanstalk Hostingplatform

Laptop Karel (clone)

git push

Laptop Kees (clone)

git push

deployment

Page 31: Git for the win!

Demo time!

command-line uiteraard :-p

Page 33: Git for the win!
Page 34: Git for the win!

Best practices1. Commit Related Changes2. Commit Often3. Don’t Commit Half-Done Work4. Test Before You Commit5. Write Good Commit Messages6. Use Branches7. Agree on a Workflow

Bron en uitleg: http://www.git-tower.com/learn/ebook/command-line/appendix/best-practices

Page 36: Git for the win!

Vragen?