git for the win!
TRANSCRIPT
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
Tools
WindowsGit installerenGit BashPHPStormSourceTree
MacGit standaardCommand-linePHPStormSourceTree
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
Interessante links● https://try.github.io/levels/1/challenges/1● http://nvie.com/posts/a-successful-git-branching-model/● http://git-scm.com/book/en/v2● http://www.git-tower.com/learn/ebook/command-
line/appendix/best-practices
Vragen?