Git for the win!

Post on 02-Aug-2015

108 views 3 download

Transcript of Git for the win!

git for the win!

2015 - Denver Sessink

git != GTI

Wat gaan we bespreken?

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

Waarom versiebeheer….

Ooit een wijziging in code terug willen draaien?

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

Hoe gaan we meerdere versies van een product handhaven?

Ooit het verschil willen zien tussen twee code files?

En met 2+ programmeurs tegelijk aan hetzelfde project werken?

Wat?

VCS (Version Control System)

Wijzigingen bijhouden in een logboek

Werkt het beste voor tekstfiles (code!)

Distributed vs Centralized

Centralized

Subversion

Distributed

Git

Distributed vs Centralized

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.

Wat is Git?

Git is...

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

○ Volledige lokale repository○ Offline commits

git is dus toch een beetje GTI ;-)

Maar...

● Alle gecommitte bestanden blijven altijd in IEDERE clone!

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

b*tch zijn

Iets de diepte in...

… please!

Termen...

WorkspaceWorking directoryCloneIndexRepositoryBranche

CommitPullPushMerge….

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

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

~ git pull

// lekker index.php wijzigen

~ git commit -m “Tweede versie homepage gemaakt”

~ git pull

~ git push

Branches...

aftakkingen dus

Master vs develop

Git heeft altijd tenminste 1 branche: master

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

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”

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

Onze werkwijze

Git + Cloud + Deployments

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

Git + Cloud + Deployments

Beanstalk Hostingplatform

Laptop Karel (clone)

git push

Laptop Kees (clone)

git push

deployment

Demo time!

command-line uiteraard :-p

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

Vragen?