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
The Foundations of Collaboration with GitHub • ...
Search
Matthew McCullough
March 08, 2014
Programming
170
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
The Foundations of Collaboration with GitHub • SIGCSE 2014
Matthew McCullough
March 08, 2014
Transcript
79 slides
A foundation of collaboration presented to the delegates of SIGCSE
2014 Version control with
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
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/join
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 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 Init git svn Status git svn Diff
git svn Tag git svn Log git svn Commit (Lg) git svn Commit (Sm) git svn Branch git c svn c 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]
education.github.com @matthewmccull Q&A
• http://education.github.com •
[email protected]
• http://git-scm.com/book • http://training.github.com Resources
More Decks by Matthew McCullough
See All by Matthew McCullough
Patterns for Collaborative Software Development in a Social World at JavaOne 2015
matthewmccullough
1
440
Collaborative Software Development in a Social World at the Utah JUG
matthewmccullough
2
200
Git and GitHub Platform Review
matthewmccullough
1
600
Your First Pull Request
matthewmccullough
0
370
Git and GitHub Workflows at the Utah JUG
matthewmccullough
1
890
Agile-ish life at GitHub
matthewmccullough
2
460
Git and GitHub Agile Workflows for HP
matthewmccullough
0
380
Writing Tools on the GitHub Platform
matthewmccullough
0
330
Git Feature Branches as an Art
matthewmccullough
0
240
Other Decks in Programming
See All in Programming
Vue.jsで作る空間解析アプリとCapacitorプラグインのData Bridge
hal_spidernight
1
170
地方こそサーバーレス — 10年続けた、顔が見えるチームで確かな基盤を / Serverless Matters Most in Regional Areas — 10 Years of Building Reliable Foundations with Close-Knit Teams
seike460
PRO
1
380
Engineering Biometric UX Across Android Versions | DroidKnights 2026
ryunen344
1
200
仕様駆動開発入門 (何を作るかを先に決めて渡す) | 目指せ Kiro マスター 05
inariku
PRO
2
120
LLM 101
dalinaum
0
480
AI-Powered Domain-Driven Design
ziobrando
0
430
DroidKnights 2026 Android A2UI Jetpack Compose 기반의 안전한 AI UI 렌더링 - 박제창
itsmedreamwalker
1
230
AIで開発が速くなった先で、開発チームは何を目指すか
shihochan
1
2k
AI時代のシニアエンジニアとは
yosuke_furukawa
PRO
15
11k
Kawaiicon: Kubernetes, it's no longer cool, but let's secure it anyway!
barnbarn
0
130
AWS CDKを理解するために公式の定義を深掘って解説してみる / Understanding AWS CDK by Digging into Its Official Definition
akihisaikeda
3
300
AI時代のTerminal環境を UNIX哲学で設計・運用する
yasunori0418
1
350
Featured
See All Featured
Evolving SEO for Evolving Search Engines
ryanjones
0
360
Building AI with AI
inesmontani
PRO
1
1.4k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
7k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
2
980
YesSQL, Process and Tooling at Scale
rocio
174
15k
A better future with KSS
kneath
240
18k
Utilizing Notion as your number one productivity tool
mfonobong
4
640
Designing for humans not robots
tammielis
254
26k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
2
3.8k
sira's awesome portfolio website redesign presentation
elsirapls
0
500
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Faster Mobile Websites
deanohume
310
32k