Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Learning Git
Search
Rob Dumas
October 16, 2012
Technology
5.1k
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Learning Git
From a talk I gave to the Chicagoland Library Drupal Group.
Rob Dumas
October 16, 2012
More Decks by Rob Dumas
See All by Rob Dumas
Git in 5 Minutes
bitsandbooks
9
2.1k
Other Decks in Technology
See All in Technology
OpenSharing について熱く語る〜AI アセットの共有について〜
kameitomohiro
0
180
2026-10-01_MagicPod_QAハーネスエンジニアリングとQA組織の未来像
ynisqa1988
1
470
Swap and Memory Reclaim - Squeezing Out More RAM
ennael
PRO
1
1.6k
spanner-autoscalerに学ぶ CRD設計パターン 〜自動化と緊急時対応を両立する Kubernetesコントローラーの作り方〜
tkuchiki
0
230
Claude起点の仕様駆動開発
tanakaseiya
0
320
私の推しは「聞いてから進む」AIです -AI-DLCに一人でアプリを作らせた話
yama3133
1
160
AI臭い文章とは何なのか
nasuvitz
38
78k
データ品質を壊しながらSnowflakeのAIに分析させてみた
kawanago
0
460
ミイダス株式会社 テックチームのご紹介 / MIIDAS Tech Team
miidas
0
100
組み立てて楽しむ AWS Blocks 入門
kmiya84377
0
180
20260930_Gemma4_Hands-on
tsho
0
210
React Nativeでの OTA Updateって、 どう説明する?
ichiki1023
0
140
Featured
See All Featured
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
3
4.3k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
The Cult of Friendly URLs
andyhume
79
7k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
Unsuck your backbone
ammeep
672
58k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
450
Become a Pro
speakerdeck
PRO
31
6.3k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
320
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Transcript
version control
rob dumas chicago public library @stray
✓why version control? ✓installing git ✓your first repository ✓branching &
merging in this lecture:
r2d.to/gitstart links
we’re all victims of data loss; some of us just
don’t know it…yet.
BACKUPS ARE REALLY F**KING IMPORTANT photo credit: alexander muse (flic.kr/p/noL2K)
snapshots
snapshots
1.0 2.0 3.0 4.0 5.0 developers work in teams and
need to track the changes to their code over time
version control
version control change joel on software: “distributed version contol is
here to say, baby” (r2d.to/QJw8lr)
✓ what files have changed ✓ who made those changes
✓ when the changes were made ✓ how those changed files differ ✓ why they were changed (hopefully) accountability
wikipedia record of changes to articles over time
git-scm.com
what’s so GREAT about git?
✓ no cost (“free as in beer”) ✓ gpl version
2 (“free as in speech”) gnu.org/licenses/gpl-2.0.html git is free & open source
✓ built for any size group ✓ encourages non-linear development
✓ complete local repositories git is local & distributed
✓ “deltas” for efficiency (binary files stored whole) ✓ cryptographically-authenticated
history using SHA1 hashes ✓ commits are atomic git is fast & secure
git is stable & popular
installing git git-scm.com/downloads sudo apt-get install git brew install git
(or yum) (requires xcode & homebrew)
git-scm.com/downloads/guis baked right in other git gui apps textmate bundle
netbeans xcode and more!
for windows users peepcode.com/products/ meet-the-command-line
is git installed? $ git -‐-‐version git version 1.7.12.1
~/.gitconfig $ git config -‐-‐global user.name "Joe User" $
git config -‐-‐global user.email "
[email protected]
"
basic workflow create/ clone repository make changes commit changes stage
changes 1 2 3 4
photo credit: muy yum (flic.kr/p/7ByV6Y) stage work area git
git basics
creating a repository $ mkdir myproject $ cd myproject $
git init Initialized empty Git repository in ~/myproject/.git/
myproject/.git/ don’t touch these files!
cloning a repository $ git clone REPO_LOCATION Cloning into 'myproject'...
remote: Counting objects: 36, done. remote: Compressing objects: 100% (33/33), done. remote: Total 36 (delta 10), reused 29 (delta 3) Receiving objects: 100% (36/36), 7.13 KiB, done. Resolving deltas: 100% (10/10), done. folder or URL
repo status (“clean”) $ git status # On branch master
nothing to commit (working directory clean)
repo status (“dirty”) $ git status # On branch master
# Untracked files: # (use "git add <file>..." to include in what will be committed) # # myfile.html nothing added to commit but untracked files present (use "git add" to track)
adding files $ git add myfile.html you have to add
the files you’ve changed each time you commit!
repo status (staged) $ git status # On branch master
# Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # new file: myfile.html #
committing changes $ git commit -‐m "Added new file,
myfile.html, to repo." [master (root-‐commit) b80da17] Added new file, myfile.html, to repo. 0 files changed create mode 100644 myfile.html
other commands $ git log $ git diff COMMIT_HASH $
git rm $ git mv
.gitignore nuclear-‐launch-‐codes.txt source/* *.temp put files, folders and patterns in
this file to tell git to ignore them.
branching & merging
master
master dev
master dev
creating a branch $ git branch awesome $ git checkout
awesome Switched to branch 'awesome'
merging a branch $ git checkout master Switched to branch
'master' $ git merge awesome Updating 5bed678..217f575 Fast-‐forward myfile.txt | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 myfile.txt
the ‘stache
the stash $ git stash $ git stash apply $
git stash list $ git stash drop STASH_ID
v1.0 master dev tagging
tagging $ git tag -‐a v1.0 -‐m "Product release"
$ git tag -‐a ronburgundy -‐m "Brick killed a guy with a trident."
distributed git
push & pull $ git push origin master $ git
pull origin master
git on the server ✓your own git server ✓github
github image source: the octodex (octodex.github.com)
further reading
get started with git alistapart.com/articles/get-started-with-git
Version Control with Git 2nd. Edition by Loeliger & McCullough
© 2012 O’Reilly Media ISBN 978-1-4493-1638-9 r2d.to/oreillygitbook
r2d.to/gitstart links
thank you!