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
Dead-Simple Version Control for your Team
Search
Matthew Reidsma
July 25, 2012
How-to & DIY
3
3.5k
Dead-Simple Version Control for your Team
How we use Git and Github to build stuff at Grand Valley State University Libraries
Matthew Reidsma
July 25, 2012
Tweet
Share
More Decks by Matthew Reidsma
See All by Matthew Reidsma
More Than Usable
matthewreidsma
0
410
Everyone is a Distance Learner
matthewreidsma
1
400
The UX of Scholarship
matthewreidsma
0
270
Good for Whom? Harvard University Libraries
matthewreidsma
0
330
More than Usable: Library Services for Humans
matthewreidsma
2
60k
Data to Action: A UX Libs Workshop
matthewreidsma
0
71
Customizing Vendor Tools for Better Customer Service
matthewreidsma
1
140
TLN: Responsive Web Design for Libraries
matthewreidsma
1
210
cssMaker
matthewreidsma
1
150
Other Decks in How-to & DIY
See All in How-to & DIY
AWS Community Day 2024: Using AWS to build a launchable knowledge rocket 👉 Organize knowledge, accelerate learning and understand AI in the process
dwchiang
0
160
240420MapillaryMeetup2024Tokyo
tosseto
0
200
中指立てたか判定IoT #iotlt #p5js
n0bisuke2
0
260
GreenPAK 初心者向けハンズオン資料
aoisaya
2
260
コロナ後の世界メイカーフェア事情 高須正和@Nico-Tech Shenzhen #KMMF2024 #KariyaMMF2024
takasumasakazu
0
290
Terra Charge|急速充電器ご利用ガイドブック / Terra Charge Fast Charger Guidebook
contents
1
150
JAWS-UG Fukuoka - AWS re:Invent 2024 re:Cap AWS Community Perspective
awsjcpm
2
110
[너구리랑! 회고 밋업 2023] 하루만에 만든 프로젝트에서 고객이 매월 결제하는 제품을 만들기까지의 여정 // 초링 님
develop_neoguri
1
100
Dirbtinis intelektas dizainerio gyvenime
lekevicius
0
220
田中 is a new HelloWorld
akichika
1
290
ラズパイカメラ向け ケーブル延長基板・ハウジングの開発
koheimasaki
PRO
1
170
How to create better speaker proposals
logico_jp
2
660
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
348
20k
How to Think Like a Performance Engineer
csswizardry
22
1.3k
Code Review Best Practice
trishagee
66
17k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2.1k
Building Flexible Design Systems
yeseniaperezcruz
328
38k
Building an army of robots
kneath
302
45k
Fashionably flexible responsive web design (full day workshop)
malarkey
406
66k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Music & Morning Musume
bryan
46
6.3k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.8k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
33
2.8k
Transcript
DEAD-SIMPLE VERSION CONTROL FOR YOUR TEAM GIT WITH MATTHEW REIDSMA
GRAND VALLEY STATE UNIVERSITY
WHO DOESN’T USE VERSION CONTROL?
VERSION CONTROL WHO?
OH BOY.
WHY YOU NEED VERSION CONTROL
GIT
GIT
WHY GIT IS AWESOME
HOW GIT WORKS
WORKING DIRECTORY
WORKING DIRECTORY INDEX (STAGING AREA) add
WORKING DIRECTORY INDEX (STAGING AREA) LOCAL REPOSITORY add commit
WORKING DIRECTORY INDEX (STAGING AREA) LOCAL REPOSITORY REMOTE REPOSITORY add
commit push
My-Computer: mreidsma$ _
My-Computer: mreidsma$ _ SCARY
None
$cd MyAwesomeApp
$cd MyAwesomeApp $touch index.html
$cd MyAwesomeApp $git init Initialized empty Git repository in /MyAwesomeApp/.git/
$touch index.html
$cd MyAwesomeApp $git init Initialized empty Git repository in /MyAwesomeApp/.git/
$git add . $touch index.html
$cd MyAwesomeApp $git init Initialized empty Git repository in /MyAwesomeApp/.git/
$git add . $git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # #! new file: index.html # $touch index.html
None
$git commit -m “First commit” [master (root-commit) 7ce2952] First commit
1 file changed, 2 insertions(+) create mode 100644 index.html
$git commit -m “First commit” $git remote add origin
[email protected]
:gvsulib/
awesomeapp.git [master (root-commit) 7ce2952] First commit 1 file changed, 2 insertions(+) create mode 100644 index.html
$git commit -m “First commit” $git remote add origin
[email protected]
:gvsulib/
awesomeapp.git [master (root-commit) 7ce2952] First commit 1 file changed, 2 insertions(+) create mode 100644 index.html $git push origin master
None
BRANCHING
[master]
[master]
[master]
[master]
[master]
[master] [branch]
[master] [branch]
[master] [branch] merge
BRANCHES ARE CHEAP
None
$cd MyAwesomeApp
$cd MyAwesomeApp $git branch newFeature
$cd MyAwesomeApp $git checkout newFeature $git branch newFeature Switched to
branch ‘newFeature’
$cd MyAwesomeApp $git checkout newFeature $git branch newFeature <!-- AWESOME
FEATURE ADDING ACTION HERE --> Switched to branch ‘newFeature’
$cd MyAwesomeApp $git checkout newFeature $git add . $git branch
newFeature <!-- AWESOME FEATURE ADDING ACTION HERE --> Switched to branch ‘newFeature’
$cd MyAwesomeApp $git checkout newFeature $git add . $git status
# On branch newFeature # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # #! modified: index.html # $git branch newFeature <!-- AWESOME FEATURE ADDING ACTION HERE --> Switched to branch ‘newFeature’
None
$git commit -m “Best feature ever” [newFeature 18q7d58] Best feature
ever 1 file changed, 1 insertions(+)
$git commit -m “Best feature ever” $git checkout master [newFeature
18q7d58] Best feature ever 1 file changed, 1 insertions(+) Switched to branch ‘master’
$git commit -m “Best feature ever” $git checkout master [newFeature
18q7d58] Best feature ever 1 file changed, 1 insertions(+) $git merge newFeature Switched to branch ‘master’ Updating 7ce2952..18q7d58 index.html | 1 + 1 file changed, 1 insertion(+)
BUT YOU CHANGED THE FILE
WORKFLOWS
LOCAL
LOCAL REMOTE
LOCAL LOCAL
LOCAL REMOTE LOCAL
LOCAL LOCAL REMOTE WEB SERVER
LOCAL LOCAL REMOTE WEB SERVER
HOW WE DO IT @ GVSU
None
None
GITHUB
GITHUB WEB SERVER
MASTER IS ALWAYS DEPLOYABLE
None
$ssh
[email protected]
$ssh
[email protected]
$git mkdir MyAwesomeApp
$ssh
[email protected]
$git cd MyAwesomeApp $git mkdir MyAwesomeApp
$ssh
[email protected]
$git cd MyAwesomeApp remote: Counting objects: 1, done.
remote: Compressing objects: 100% (1/1), done. remote: Total 1 (delta 21), reused 1 (delta 14) Unpacking objects: 100% (1/1), done. $git mkdir MyAwesomeApp $git clone https://github.com/gvsulib/ awesomeapp.git Cloning into awesomeapp...
None
$ssh
[email protected]
$ssh
[email protected]
$git cd MyAwesomeApp
$ssh
[email protected]
$git cd MyAwesomeApp $git pull origin master
BUT
None
None
https://gist.github.com/3138516
OTHER FANCY FEATURES
.gitignore
diff
log
filter-branch
stash
reset
RESOURCES John Fink: A Gentle Introduction to Modern Version Control
http://acrl.ala.org/techconnect/?p=1191 Flashbake - automated git for writers http:/bitbucketlabs.net/flashbake Download git http://git-scm.com Git Reference http://gitref.org Git and Github Bootcamp http://help.github.com/articles/set-up-git
None
THANK YOU
[email protected]
@mreidsma http://github.com/mreidsma http://github.com/gvsulib