Git, Unicorns and
Rainbows
Geoffrey Bachelet — KnpLabs
Wednesday, September 21, 11
Slide 2
Slide 2 text
Not your average git
talk
Wednesday, September 21, 11
Slide 3
Slide 3 text
Ready?
Wednesday, September 21, 11
Slide 4
Slide 4 text
Forgot something in
your commit?
Wednesday, September 21, 11
Slide 5
Slide 5 text
git --amend
Wednesday, September 21, 11
Slide 6
Slide 6 text
git --amend
• Add files to a commit
• Remove files from a commit
• Change a commit’s message
Wednesday, September 21, 11
Slide 7
Slide 7 text
Partially commit a file?
Wednesday, September 21, 11
Slide 8
Slide 8 text
git add -p
Wednesday, September 21, 11
Slide 9
Slide 9 text
git add -p
• Stage only the chunks of diff you want
• Intelligent chunking (chunk more!)
• Manual chunk edit
Wednesday, September 21, 11
Slide 10
Slide 10 text
Tweak your commit
history before pushing?
Wednesday, September 21, 11
Slide 11
Slide 11 text
git rebase -i
Wednesday, September 21, 11
Slide 12
Slide 12 text
git rebase -i
• Change commits order
• Edit commits (just like commit --amend)
• Squash commits together
Wednesday, September 21, 11
Slide 13
Slide 13 text
Internet just went
down?
Wednesday, September 21, 11
Slide 14
Slide 14 text
Work locally!
Wednesday, September 21, 11
Slide 15
Slide 15 text
Work locally!
• Commit
• Create / merge branches
• What you can’t do: push and fetch
Wednesday, September 21, 11
Slide 16
Slide 16 text
Want to create a
shitload of branches?
Wednesday, September 21, 11
Slide 17
Slide 17 text
Branches are cheap as
fuck.
Wednesday, September 21, 11
Slide 18
Slide 18 text
Branches are cheap
• A branch is just a ref to a commit
• That is, a 40 bytes file
• Containing a sha1
Wednesday, September 21, 11
Slide 19
Slide 19 text
Woops, I should have
branched that?
Wednesday, September 21, 11
Slide 20
Slide 20 text
It’s never too late.
Wednesday, September 21, 11
Slide 21
Slide 21 text
It’s never too late
• Mark your current commit
• Switch back to previous branch
• Reset to branch start-point
Wednesday, September 21, 11
Slide 22
Slide 22 text
The build is broken?
Wednesday, September 21, 11
Slide 23
Slide 23 text
git bisect
Wednesday, September 21, 11
Slide 24
Slide 24 text
git bisect
• Tell git a commit for which the build works
• And a commit for which it’s broken
• It will find the commit that breaks!
Wednesday, September 21, 11
Slide 25
Slide 25 text
You commited your
database password?
Wednesday, September 21, 11
Slide 26
Slide 26 text
git filter-branch
Wednesday, September 21, 11
Slide 27
Slide 27 text
git filter-branch
• Crawls your history
• Runs commands on it
• And voila!
Wednesday, September 21, 11