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
Git for the Uninitiated
Search
Matthew McCullough
February 18, 2013
Programming
1
370
Git for the Uninitiated
A presentation delivered by Matthew McCullough at DevNexus 2013 in Atlanta, GA, USA.
Matthew McCullough
February 18, 2013
Tweet
Share
More Decks by Matthew McCullough
See All by Matthew McCullough
Patterns for Collaborative Software Development in a Social World at JavaOne 2015
matthewmccullough
1
400
Collaborative Software Development in a Social World at the Utah JUG
matthewmccullough
2
180
Git and GitHub Platform Review
matthewmccullough
1
550
Your First Pull Request
matthewmccullough
0
330
Git and GitHub Workflows at the Utah JUG
matthewmccullough
1
850
Agile-ish life at GitHub
matthewmccullough
2
410
Git and GitHub Agile Workflows for HP
matthewmccullough
0
330
Writing Tools on the GitHub Platform
matthewmccullough
0
290
Git Feature Branches as an Art
matthewmccullough
0
190
Other Decks in Programming
See All in Programming
Cap'n Webについて
yusukebe
0
150
AI Agent Dojo #4: watsonx Orchestrate ADK体験
oniak3ibm
PRO
0
110
実はマルチモーダルだった。ブラウザの組み込みAI🧠でWebの未来を感じてみよう #jsfes #gemini
n0bisuke2
3
1.3k
Kotlin Multiplatform Meetup - Compose Multiplatform 외부 의존성 아키텍처 설계부터 운영까지
wisemuji
0
140
認証・認可の基本を学ぼう後編
kouyuume
0
250
AIの誤りが許されない業務システムにおいて“信頼されるAI” を目指す / building-trusted-ai-systems
yuya4
6
4k
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
200
AI時代を生き抜く 新卒エンジニアの生きる道
coconala_engineer
1
470
ThorVG Viewer In VS Code
nors
0
300
チームをチームにするEM
hitode909
0
410
モデル駆動設計をやってみようワークショップ開催報告(Modeling Forum2025) / model driven design workshop report
haru860
0
290
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
540
Featured
See All Featured
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
180
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
37
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
270
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
350
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
Visualization
eitanlees
150
16k
Writing Fast Ruby
sferik
630
62k
Designing Powerful Visuals for Engaging Learning
tmiket
0
190
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
200
The Art of Programming - Codeland 2020
erikaheidi
56
14k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
1.8k
Applied NLP in the Age of Generative AI
inesmontani
PRO
3
2k
Transcript
A collaborative reboot for version control GIT FOR THE UNINITIATED
Matthew.... @matthewmccull ‣Open source contributor ‣O'Reilly Git Video Co-instructor ‣Co-Author
of O'Reilly's Git book ‣5-year Git trainer ‣Instructor at GitHub
http://oreil.ly/ogitvid
http://amzn.to/oreillygit
None
None
None
None
Version Control A refreshed approach to VCS
None
Open Source
bash scripts ☛ C code
is not a slightly better
None
None
None
http://git-scm.com
Starting Up Creating a repository
Get a GitHub account.
Get a GitHub account. http://github.com/signup/free
Create a new repo(sitory).
Add a file.
View the commit history (timeline).
Make changes to the file.
Repo Creation Local and remote initialization simplicity
# Green field project $ git init newproject $ cd
newproject # ...start coding
or if you already have source code
# Legacy project tree $ cd existingproject $ git init
# Add all the code $ git add . $ git commit -m”Initial import”
‣Blob ‣Tree ‣Commit ‣Tag
tree tree: 7e8b1 web blob: 9ab16 index.html a10b3 tree blob:
8d162 logo.jpg blob: 51d22 draw.js 7e8b1 commit tree: a10b3 parent: nil author: Fird committer: Matthew message: Major refactoring of the web content. c67db blob <html> <body></body> </html> 9ab16 blob //Some more javascript var renderSize 51d22 blob 7D 8D B3 7F BD 12 9F E9 7B 78 9D 3F 5C A6 72 CB 8d162
Collaborating Two authors
Make simultaneous changes to the file.
Collaborating Redux Untrusted collaborators
Untrusted changes to the file.
Changelist Three stage thinking
Working Staging Repo add commit edit
None
‣shopping cart ‣put things in ‣take things out ‣purchase at
register
v1 v2 v3 v4 File A File B File C
File A File B File B File C v5 File A File B File B File A File A File C File C File C
Workspaces The power of simple branch toggling
Local Remote Upstream
# Creating a branch git branch <BRANCHNAME>
RELEASE_1.0 HEAD bug979branch commit c67db commit 9bd21 commit 1c2d7 commit
8c2d1 commit 1bdcd commit 2daa1
What do cheap branches enable?
‣Experimentation ‣
‣Experimentation ‣Safe experimentation
Better reuse of units of work
Work Models Enabling different development styles
product v1.0 integration story1 story2 v1.5 integration story3
Local Remote Upstream Integ Product Integ Product Integ Product
Local Remote Upstream Idea Story Feature Feature Feature Integ Product
Integ Product Integ Product
Local Remote Upstream Idea Story Feature Feature Feature Integ Product
Integ Product Integ Product
Central Repo C e n t r a l i
z e d
Blessed Repo D i c t a t o r
s h i p
Certified Repo Development Repo n t e g r a
t i o n M a n a g e d Continuous Integration Server
C u s t o m + P u b
l i c C o n t r i b Customized ☚ Private Public ☛ GitHub
Mirror Development Repo M i r r o r e
d Mirror Certified Repo
Client Apps GUIs and other front-ends
http://windows.github.com
http://windows.github.com
http://mac.github.com
http://mac.github.com
Remotes Bandwidth and geographic challenges
Local Remote Upstream
Local Remote Upstream
Local Remote Upstream
data from http://whygitisbetterthanx.com/#git-is-fast git svn Init git svn Status git
svn Diff git svn Tag git svn Log git svn Commit (Lg) git svn Commit (Sm) git c svn c Branch Speed
Local Remote Upstream commit fetch push clone clone clone push
pull pull pull
Commit Push Pull
Commit Push Pull
Commit Push Pull
Integration CI, scripting, and hooks
None
"This is so important, we can't entrust it to automation.
We need our top developer to supervise it."
continuous integration servers jenkins travis ci circleci buildhive
None
None
None
None
None
Summary The Git and GitHub ecosystem
[email protected]
github.com/training @githubtraining githubtraining Q&A
http://learn.github.com
http://teach.github.com
Why Git?
None
None
I'm an egotistical bastard, and I name all my projects
after myself. First Linux, now git. -Linus Torvalds “ Credits: Martin Streicher, http://en.wikipedia.org/wiki/File:Linus_Torvalds.jpeg
CVS Subversion PVCS Perforce Clear Case Source Safe RCS Folders
Small Footprint
Simple
Powerful
Composable
Setting Up Git
binaries on your $PATH
http://help.github.com
None
Using Git
Create a Git repository
None
http://git-scm.com/book
http://teach.github.com
http://help.github.com
Git GUIs
None
https://github.com/github/GitPad
None
http://eclipse.org/egit/
None
Using GitHub
None
‣Social coding ‣Fork and pull model
Blessed Repo
None
‣Web-based image diff ‣Lightweight issue tracking
None
None
https://enterprise.github.com
None
Q&A
@matthewmccull
[email protected]
training.github.com