Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Advanced Git - Paul Grayson
Search
Las Vegas Ruby Group
August 14, 2013
1
77
Advanced Git - Paul Grayson
Las Vegas Ruby Group
August 14, 2013
Tweet
Share
More Decks by Las Vegas Ruby Group
See All by Las Vegas Ruby Group
Ruby ISO Standard - David Grayson
lvrug
0
140
Windows Automation - Howard Feldman
lvrug
0
78
Separating Your Application from Rails - Brian Hughes
lvrug
0
130
SWIG and Ruby - David Grayson
lvrug
0
85
Practical Object-Oriented Design in Ruby - Charles Jackson
lvrug
3
130
The Hamster Gem - Ryan Mulligan
lvrug
1
98
Varnish+Redis - Russ Smith
lvrug
1
110
Lambdas and Pops - Jan Hettich
lvrug
0
87
Making Good Use of Fonts - Russ Smith
lvrug
1
96
Featured
See All Featured
The Invisible Side of Design
smashingmag
302
51k
A designer walks into a library…
pauljervisheath
210
24k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.2k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
Code Reviewing Like a Champion
maltzj
527
40k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
How to train your dragon (web standard)
notwaldorf
97
6.4k
Building an army of robots
kneath
306
46k
Faster Mobile Websites
deanohume
310
31k
Testing 201, or: Great Expectations
jmmastey
46
7.8k
How GitHub (no longer) Works
holman
316
140k
Transcript
Advanced Git: Multiple Branches and Servers Paul Grayson 2013-08-14
Simple Git • One server: “origin” • One branch: “master”
Demo: make a commit and push
Goal Use Git with multiple branches and servers, and know
what is going on.
What is a branch? A label for a state of
the repository - Current files (the commit) and all history. • List: git branch [-a] • Create: git branch <name> • Read: git show-branch, git log • Update: git commit • Delete: git branch -d <name>
Structure of Git history branch1 master
History of branch1 branch1 master
History of master branch1 master
branch1 --not master branch1 master
master --not branch1 branch1 master
Merging: the main point of branches branch1 master merge base
Checking changes on a branch • git log A --not
B • gitk A --not B • git merge-base A B • git log -1 commit • git log --oneline --graph • git diff A B
Multiple servers • Repositories on servers are called remotes -
but so are some other things, watch out! • Look at .git/config • git fetch server • git push server A:B
Git history with remotes branch1 master server/master origin/master
Git history with remotes branch1 master server/master origin/master LOCAL CACHED
COPIES!!!!
Checking remote branches git fetch Then use same techniques as
for branches • git log remote/A --not remote/B • gitk remote/A --not remote/B • git show-branch --merge-base ... • git log -1 commit • git log --oneline --graph • git diff remote/A remote/B
Putting it together: simple two-server workflow origin - code archive
server - production git showchanges branch1 git merge branch1 git push origin master git push origin :branch1 git push server master (on server) git merge master
Final touch: make it like Heroku using post-receive #!/bin/sh unset
GIT_DIR cd .. exec git merge master --ff