Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
You already git started. Now... what?
Search
delucas
October 24, 2014
Technology
3
140
You already git started. Now... what?
Talk given at RubyConf Argentina 2014. A journey through the four main git workflows.
delucas
October 24, 2014
Tweet
Share
More Decks by delucas
See All by delucas
TBD - Too Busy Disorder
delucas
0
510
Gamification
delucas
1
120
Pedacitos de rubí
delucas
0
70
¿Aún no usás git y GitHub?
delucas
0
47
Desarrollo de Aplicaciones Móviles - Maestría en Informática
delucas
0
130
TDD IRL reloaded
delucas
0
84
Adaptación de una plataforma de e-learning a nuevos entornos
delucas
0
220
TDD IRL
delucas
1
110
Introducción wecode.io
delucas
0
68
Other Decks in Technology
See All in Technology
【令和最新版】AWS Direct Connectと愉快なGWたちのおさらい
minorun365
PRO
5
760
誰も全体を知らない ~ ロールの垣根を超えて引き上げる開発生産性 / Boosting Development Productivity Across Roles
kakehashi
1
230
【Pycon mini 東海 2024】Google Colaboratoryで試すVLM
kazuhitotakahashi
2
530
マルチモーダル / AI Agent / LLMOps 3つの技術トレンドで理解するLLMの今後の展望
hirosatogamo
37
12k
複雑なState管理からの脱却
sansantech
PRO
1
150
リンクアンドモチベーション ソフトウェアエンジニア向け紹介資料 / Introduction to Link and Motivation for Software Engineers
lmi
4
300k
SREによる隣接領域への越境とその先の信頼性
shonansurvivors
2
520
ノーコードデータ分析ツールで体験する時系列データ分析超入門
negi111111
0
410
マルチプロダクトな開発組織で 「開発生産性」に向き合うために試みたこと / Improving Multi-Product Dev Productivity
sugamasao
1
310
AWS Media Services 最新サービスアップデート 2024
eijikominami
0
200
OS 標準のデザインシステムを超えて - より柔軟な Flutter テーマ管理 | FlutterKaigi 2024
ronnnnn
0
160
TypeScript、上達の瞬間
sadnessojisan
46
13k
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
Facilitating Awesome Meetings
lara
50
6.1k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
329
21k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
410
Fireside Chat
paigeccino
34
3k
A Philosophy of Restraint
colly
203
16k
Agile that works and the tools we love
rasmusluckow
327
21k
Into the Great Unknown - MozCon
thekraken
32
1.5k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
27
840
VelocityConf: Rendering Performance Case Studies
addyosmani
325
24k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
24k
Transcript
You already git started. Now... what?
git is simple
git can take whichever form you need
git can take whichever form you want
a journey into git workflows
wecode.io Lucas Videla @luke_ar github.com/delucas
Setting expectations • git intermediate • some known knowns •
98 slides • 20 minutes • 4 workflows
#1 Centralized Workflow
At the beginning there was a central repository...
and the users cloned it.
Whenever someone works, he pushes his changes
and everyone syncs again.
an example would be handy here
master master master # git clone repo_uri # git clone
repo_uri
master master master # git add # git commit #
zz
master master master # git add # git commit #
git add # git commit
master master master # git push # git add #
git commit
master master master # # git push error: failed to
push zz
master master master # # git pull rebase zz
master master master # # git push zz
master master master # git pull # zz
Centralized Workflow onboarding local env
Centralized Workflow onboarding local env misses some points and it
lies!
#2 Feature Branch Workflow
There is a centralized repo
and the many users cloned it.
Whenever someone works, he pushes his changes
and everyone syncs again.
So... what's the difference?
the use of branches
another example would be handy here
master # git clone repo_uri master
master # git checkout b issue#42 master issue#42
master # git add # git commit master issue#42
master # git add # git commit master issue#42
master # git add # git commit master issue#42
master # git push origin issue#42 issue#42 master issue#42
master # git clone repo_uri issue#42 master
master # git checkout b newlogin issue#42 master new-login
master # (after two commits) issue#42 master new-login
master # git push origin newlogin issue#42 master new-login new-login
master # git checkout master new-login issue#42 master new-login
m master # git merge noff newlogin new-login issue#42 master
new-login
m master # git push origin master new-login issue#42 master
new-login m
master # git checkout master new-login issue#42 m master issue#42
master # git pull origin master new-login issue#42 m master
issue#42 m
master # git merge noff issue#42 new-login issue#42 m master
issue#42 m m
master # git push origin master new-login issue#42 m m
master issue#42 m m
master # git branch d issue#42 new-login issue#42 m m
master m m
master # git push origin :issue#42 new-login m m master
m m
new-login master # new-login m m master m zz
new-login master # git pull origin master new-login m m
master m m
master # git branch d newlogin new-login m m master
m m
master # git push origin :newlogin m m master m
m
Feature Branch Workflow uses branches! safe env does not lie
allows pull-requests
Feature Branch Workflow uses branches! safe env does not lie
allows pull-requests many spurious commits hard to bind with CI
#3 Gitflow Workflow
more robust
more strict
relies on CoC nvie.com/posts/a-successful-git-branching-model
2 long-term branches (master, devel) x short-term branches (hotfix-*, issue-*,
release)
asking for an example? (let's speed up things a little)
master devel hotfix release feature-* v0.1 v0.2 v1.0
master devel hotfix release feature-* v0.1 v0.2 v1.0
master devel hotfix release feature-* v0.1 v0.2 v1.0
master devel hotfix release feature-* v0.1 v0.2 v1.0
master devel hotfix release feature-* v0.1 v0.2 v1.0
master devel hotfix release feature-* v0.1 v0.2 v1.0
master devel hotfix release feature-* v0.1 v0.2 v1.0
master devel hotfix release feature-* v0.1 v0.2 v1.0
master devel hotfix release feature-* v0.1 v0.2 v1.0
Gitflow Workflow robust favors stability tools! github.com/nvie/gitflow
Gitflow Workflow robust favors stability tools! tedious difficult onboarding github.com/nvie/gitflow
#4 Forking Workflow
here is a big difference
everybody has a remote repo
and full access to read and write on it
but can just read from other's repo
more secure
favors collaboration
open source
how does it work?
there is an arbitrarilly privileged repo
collaborators clone it into his own machines
then push it to their own remote repositories
any new work is pushed to own remote repo
collaborator files up a pull request !
maintainer pulls from collaborator's and reviews
if OK, merges and pushes into privileged repo
collaborators pull again from the central repo
and update their own remote repos
and so on...
Forking Workflow scalable open source <3
Forking Workflow scalable open source <3 another paradigm YAGNI
Final Thoughts
Forking Workflow Gitflow Workflow Feature Branch Workflow Centralized Workflow svn,
onboarding small teams, experiments! careful releases big projects, open source
Questions?
Thank you! Icons thenounproject.com Thomas Le Bas, James Fenton, ARudmann,
Julien Deveaux, Norbert Kucsera and im icons Palette colourlovers.com “cheer up emo kid”, by electrikmonk Fonts fontsquirrel.com and ufonts.com Raleway and Rockwell @luke_ar