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
Advanced Git - Paul Grayson
Search
Las Vegas Ruby Group
August 14, 2013
1
72
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
110
Windows Automation - Howard Feldman
lvrug
0
45
Separating Your Application from Rails - Brian Hughes
lvrug
0
97
SWIG and Ruby - David Grayson
lvrug
0
54
Practical Object-Oriented Design in Ruby - Charles Jackson
lvrug
3
110
The Hamster Gem - Ryan Mulligan
lvrug
1
80
Varnish+Redis - Russ Smith
lvrug
1
84
Lambdas and Pops - Jan Hettich
lvrug
0
52
Making Good Use of Fonts - Russ Smith
lvrug
1
65
Featured
See All Featured
Optimizing for Happiness
mojombo
376
70k
Being A Developer After 40
akosma
89
590k
Making Projects Easy
brettharned
116
6k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
How STYLIGHT went responsive
nonsquared
98
5.3k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.4k
Building Applications with DynamoDB
mza
93
6.2k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
27
1.9k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
40
2k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
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