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
92
Windows Automation - Howard Feldman
lvrug
0
37
Separating Your Application from Rails - Brian Hughes
lvrug
0
70
SWIG and Ruby - David Grayson
lvrug
0
39
Practical Object-Oriented Design in Ruby - Charles Jackson
lvrug
3
96
The Hamster Gem - Ryan Mulligan
lvrug
1
70
Varnish+Redis - Russ Smith
lvrug
1
73
Lambdas and Pops - Jan Hettich
lvrug
0
38
Making Good Use of Fonts - Russ Smith
lvrug
1
53
Featured
See All Featured
Become a Pro
speakerdeck
PRO
9
4.5k
BBQ
matthewcrist
79
8.7k
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
103
6.6k
Building Effective Engineering Teams - LeadDev
addyosmani
26
1.8k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
18
1.7k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
219
21k
How GitHub (no longer) Works
holman
304
140k
The MySQL Ecosystem @ GitHub 2015
samlambert
242
12k
Navigating Team Friction
lara
177
13k
Designing the Hi-DPI Web
ddemaree
276
33k
The Art of Programming - Codeland 2020
erikaheidi
41
12k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
225
51k
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