When you explain a why, you have to
be in some framework that you
allow something to be true.
GitButler
Slide 12
Slide 12 text
aunt minnie is in the hospital
GitButler
Slide 13
Slide 13 text
WHY?
GitButler
Slide 14
Slide 14 text
aunt minnie is in the hospital
GitButler
she fell and broke her hip
Slide 15
Slide 15 text
WHY?
GitButler
Slide 16
Slide 16 text
aunt minnie is in the hospital
GitButler
she fell and broke her hip
she slipped on some ice
Slide 17
Slide 17 text
WHY?
GitButler
Slide 18
Slide 18 text
aunt minnie is in the hospital
GitButler
she fell and broke her hip
she slipped on some ice
ice is slippery
Slide 19
Slide 19 text
WHY?
GitButler
Slide 20
Slide 20 text
first
principles
GitButler
Slide 21
Slide 21 text
first
principles
GitButler
for version control
Slide 22
Slide 22 text
we all use git
GitButler
Slide 23
Slide 23 text
WHY?
GitButler
Slide 24
Slide 24 text
we all use git
GitButler
we need version control
Slide 25
Slide 25 text
WHY?
GitButler
Slide 26
Slide 26 text
we all use git
GitButler
we need version control
to collaborate and save our work
Slide 27
Slide 27 text
WHY?
GitButler
Slide 28
Slide 28 text
we all use git
GitButler
we need version control
to collaborate and save our work
our computer doesn’t save the
history of our files or let other people
access them
Slide 29
Slide 29 text
WHY?
GitButler
Slide 30
Slide 30 text
GitButler
history saving, file access
Slide 31
Slide 31 text
GitButler
history saving, file access
google docs
Slide 32
Slide 32 text
GitButler
what does
version control
do?
Slide 33
Slide 33 text
GitButler
what does version control do?
backing up
commit
experimenting
branch, checkout
collaborating and reviewing
diff, merge
moving bits
push, pull
archaeology
log, blame, bisect
Slide 34
Slide 34 text
GitButler
what does version control do?
backing up
commit
experimenting
branch, checkout
collaborating and reviewing
diff, merge
moving bits
push, pull
archaeology
log, blame, bisect
archaeology
log, blame, bisect
Slide 35
Slide 35 text
GitButler
what does version control do?
archaeology
log, blame, bisect
Slide 36
Slide 36 text
GitButler
what question
does this answer?
Slide 37
Slide 37 text
the
common
questions
GitButler
Slide 38
Slide 38 text
GitButler
the common questions
What are the last few dozen commits
that have been made to this codebase?
Slide 39
Slide 39 text
GitButler
the common questions
What are the last few dozen commits
that have been made to this codebase?
git log
Slide 40
Slide 40 text
git log —-oneline —-graph
Slide 41
Slide 41 text
GitButler
the common questions
Who is the last person who
touched this line of code?
GitButler
the common questions
Who is the last person who
touched this line of code?
What are the last few dozen commits
that have been made to this codebase?
Slide 49
Slide 49 text
the
uncommon
questions
GitButler
Slide 50
Slide 50 text
GitButler
the uncommon questions
What commits are on this branch
that are not yet merged
into this other branch?
Slide 51
Slide 51 text
No content
Slide 52
Slide 52 text
git log main..self-hosted
Slide 53
Slide 53 text
git log main..self-hosted
Slide 54
Slide 54 text
git log main ^self-hosted
Slide 55
Slide 55 text
git log main ^self-hosted
Slide 56
Slide 56 text
GitButler
the uncommon questions
What commits introduced a change
that included a speci
fi
c string?
Slide 57
Slide 57 text
git log -S files_watcher -p
Slide 58
Slide 58 text
GitButler
the uncommon questions
What
fi
le was this
function moved from?
Slide 59
Slide 59 text
git blame -L 15,26 path/to/file
Slide 60
Slide 60 text
git blame -w -C -C -C —L 15,26 path/to/file
Slide 61
Slide 61 text
git blame -w -C -C -C —L 15,26 path/to/file
Slide 62
Slide 62 text
git blame -w -C -C -C —L 15,26 path/to/file
Slide 63
Slide 63 text
git blame -w -C -C -C —L 15,26 path/to/file
Slide 64
Slide 64 text
GitButler
the uncommon questions
What files are most
closely related to this file?
Slide 65
Slide 65 text
What files are most closely related to this file?
Slide 66
Slide 66 text
What files are most closely related to this file?
get all the commits that touch this
fi
le
Slide 67
Slide 67 text
What files are most closely related to this file?
get all the
fi
les each commit touches
get all the commits that touch this
fi
le
Slide 68
Slide 68 text
What files are most closely related to this file?
print out the top
fi
ve
fi
les in common
Slide 69
Slide 69 text
No content
Slide 70
Slide 70 text
the
impossible
questions
GitButler
Slide 71
Slide 71 text
GitButler
the impossible questions
What Pull Requests contributed to this file?
What code in other repositories are related to this code?
What were the conversations (in chat or GitHub) my team had around
this code before it was merged?
What did the author/s reference when writing this?
What specifications was this based on?
What errors were or are commonly created by this code or code
related to it that I should be aware of before changing?
Slide 72
Slide 72 text
ask your code?
GitButler
what do you want to
Slide 73
Slide 73 text
thanks!
@chacon
GitButler
speakerdeck.com/schacon
github.com/schacon
these slides
code examples