SlideShare a Scribd company logo
Git-ing out of your
Git messes
Katie Sylor-Miller
@ksylor && @ohshitgit
Etsy is a global marketplace where people around the world connect,
both online and offline, to make, sell and buy unique goods.
Don’t git into a mess
in the first place
Agenda
Fundamental Concepts
Workflow in-depth
Viewing and changing history
Avoiding (and fixing) messes
Commits
Branches
HEAD
History
Fundamental concepts
Commits
Branches
HEAD
History
Fundamental concepts
What’s in a commit
Each commit contains a few pieces of information:
• A snapshot of the entire repo
• Who made this change
• When this change was made
• A message describing the commit
• A pointer to the previous commit
What’s in a commit
SHA-1
Unique
40-char
hash
Each commit contains a few pieces of information:
• A snapshot of the entire repo
• Who made this change
• When this change was made
• A message describing the commit
• A pointer to the previous commit
Commit hashes
a4df41a8045877d50396d00113598e47f6ad10ef
aec561108fd86412c2a9083d7d95ed1668d2f4e4
6dab6a712177cf2dd2cf8b79a2cee24351be60eb
1a3531222242241153ac8a76b752d5f525a99d2c
912bde5d4e5e962269ddff87da83cc5ce55e75d0
Commit hash abbreviations
a4df41a
aec5611
6dab6a7
1a35312
912bde5
Commits
Branches
HEAD
History
Fundamental concepts
Mental model: branches are a linked list
a4df41aaec56116dab6a71a35312 912bde5
A B C D E
Mental model: branches are a linked list
a4df41aaec56116dab6a71a35312 912bde5
• A snapshot of the entire repo
• Who made this change
• When this change was made
• A message describing the commit
• A pointer to the previous commit
A B C D E
Mental model: branches are a linked list
a4df41aaec56116dab6a71a35312 912bde5
• A snapshot of the entire repo
• Who made this change
• When this change was made
• A message describing the commit
• A pointer to the previous commit
A B C D E
Branches are a linked list reference
A4DF41A6DAB6A7
a4df41aaec56116dab6a71a35312 912bde5
A B C D EA B C D E
master
Branches are a linked list reference text file
A4DF41A6DAB6A7
a4df41aaec56116dab6a71a35312 912bde5
master
.git/refs/heads/master
912bde5d4e5e962269ddff87da83cc5ce55e75d0
A B C D E
ksylormiller:~/ohshitgit (master)$ git branch new-branch
19
Create a new branch
New branches are a new reference
A4DF41A6DAB6A7
a4df41aaec56116dab6a71a35312 912bde5
master
new-branch
A B C D E
New branches are a new text file
A4DF41A
a4df41aaec56116dab6a71a35312 912bde5
master
A B C D E
.git/refs/heads/master
912bde5d4e5e962269ddff87da83cc5ce55e75d0
.git/refs/heads/new-branch
912bde5d4e5e962269ddff87da83cc5ce55e75d0
new-branch
Commits
Branches
HEAD
History
Fundamental concepts
HEAD points to your currently checked-out branch
HEAD
a4df41aaec56116dab6a7 912bde5
master
new-branch
B C D E
HEAD is a reference to a reference
HEAD
A4DF41A6DAB6A7
a4df41aaec56116dab6a7 912bde5
master
new-branch
.git/refs/HEAD
ref: refs/heads/master
B C D E
WTF is the HEAD
• The HEAD decides what branch/commit will be the target of
your actions
• There is only one HEAD per repository
• The HEAD is unique to your local install of git
• The history of the HEAD is recorded, which gives you a way
to undo your work (more on this later)
ksylormiller:~/ohshitgit (master)$ git checkout new-branch
26
Change branches
HEAD points to your currently checked-out branch
HEAD
a4df41aaec56116dab6a7 912bde5
master
new-branch
.git/refs/HEAD
ref: refs/heads/master
B C D E
ksylormiller:~/ohshitgit (master)$ git commit -m “Your message here”
28
Add a new commit to our branch
A new commit becomes the new HEAD
1668d2f
HEAD
a4df41aaec56116dab6a7 912bde5
master
new-branch
B C D E F
Commits
Branches
HEAD
History
Fundamental concepts
History is a linked list
1668d2fa4df41aaec56116dab6a7 912bde5
master
new-branch
B C D E F
History is a linked list tree
master
ca53f4f
1668d2f
a4df41a 912bde5
new-branch
3de21fa
C D E
F
G H
ca53f4f
1668d2f
fd4ab1a
912bde5
3de21fa
new-branch
86bcaed 2d3a4da
whee
3037cf2
master
44ff212
4aa3b5f
c1d2ea8 40648a8
5ae77a5
omg-stop
fd4ab1a
and-another
History is a linked list tree directed acyclic graph
f6e51fd
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
Environments
A simple workflow
A complicated workflow
Workflows in depth
Environments
A simple workflow
A complicated workflow
Workflows in depth
REMOTE/ORIGIN
Your machineGithub
LOCAL STAGING/INDEX WORKSPACE
Central server where
shared git repositories
are stored
--
Remotes typically are
“bare” - you can’t
directly modify them
REMOTE/ORIGIN
Your machineGithub
LOCAL STAGING/INDEX WORKSPACE
Your local copy of the
remote git repository
--
Lives in a .git folder
--
Contains the entire
history of a remote repo
plus local changes
REMOTE/ORIGIN
Your machineGithub
LOCAL STAGING/INDEX WORKSPACE
Snapshot of changes to
the current branch that
you want to commit
--
Is a copy of all of the
files in the repo, not just
the changed files
REMOTE/ORIGIN
Your machineGithub
LOCAL STAGING/INDEX WORKSPACE
Where changes to
files are made
--
Analogous to the
physical directory
where files are stored
on disk
Environments
A simple workflow
A complicated workflow
Workflows in depth
REMOTE/ORIGIN
Your machineGithub
LOCAL STAGING/INDEX WORKSPACE
MASTER MASTER
baz.php
foo.php
bar.php
baz.php
foo.php
bar.php
REMOTE/ORIGIN
Your machineGithub
LOCAL STAGING/INDEX WORKSPACE
MASTER MASTER
baz.php
foo.php
bar.php
baz.php
foo.php
bar.php
git status
is your BFF
by Etsy seller SmittenKittenKendall
ksylormiller:~/ohshitgit (master)$ git status
On branch master
Your branch is up-to-date with ‘origin/master'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: bar.php
no changes added to commit (use "git add" and/or "git commit -a”)
44
git status is your BFF
ksylormiller:~/ohshitgit (master)$ git add bar.php
45
git add
REMOTE/ORIGIN
Your machineGithub
LOCAL STAGING/INDEX WORKSPACE
MASTER MASTER
baz.php
foo.php
bar.php
baz.php
foo.php
bar.php
REMOTE/ORIGIN
Your machineGithub
LOCAL STAGING/INDEX WORKSPACE
MASTER MASTER
baz.php
foo.php
bar.php
baz.php
foo.php
bar.php
ksylormiller:~/ohshitgit (master)$ git commit -m "Meaningful commit message"
[master 4875652] Meaningful commit message
1 file changed, 1 insertion(+)
48
git commit
REMOTE/ORIGIN
Your machineGithub
LOCAL STAGING/INDEX WORKSPACE
MASTER
MASTER
baz.php
foo.php
bar.php
ksylormiller:~/ohshitgit (master)$ git push
Counting objects: 4, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 328 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/ksylor/fluent-example.git
4875652..97e8858 master -> master
50
git push
REMOTE/ORIGIN
Your machineGithub
LOCAL STAGING/INDEX WORKSPACE
MASTER
MASTER
REMOTE/ORIGIN
Your machineGithub
LOCAL STAGING/INDEX WORKSPACE
MASTER MASTER
But… it’s usually not
that simple
Environments
A simple workflow
A complicated workflow
Workflows in depth
REMOTE/ORIGIN
Your machineGithub
LOCAL STAGING/INDEX WORKSPACE
MASTER
MASTER
REMOTE/ORIGIN
Your machineGithub
LOCAL STAGING/INDEX WORKSPACE
MASTER
ORIGIN/
MASTER
MASTER
ksylormiller:~/ohshitgit (master)$ git fetch
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From https://github.com/ksylor/fluent-example
97e8858..8a97966 master -> origin/master
57
git fetch
REMOTE/ORIGIN
Your machineGithub
LOCAL STAGING/INDEX WORKSPACE
MASTER
ORIGIN/
MASTER
MASTER
ksylormiller:~/ohshitgit (master)$ git merge origin/master
59
git merge
Merge remote-tracking branch 'origin/master'
# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.
~
~
~
~
"~/ohshitgit/.git/MERGE_MSG" 7L, 293C
60
oh god we’re in vim
ksylormiller:~/ohshitgit (master)$ git merge origin/master
Updating 97e8858..8a97966
Fast-forward
README.md | 2 ++
1 file changed, 2 insertions(+)
create mode 100644 README.md
61
git merge complete
REMOTE/ORIGIN
Your machineGithub
LOCAL STAGING/INDEX WORKSPACE
MASTER
ORIGIN/
MASTER
MASTER
ksylormiller:~/ohshitgit (master)$ git pull
Merge made by the 'recursive' strategy.
README.md | 2 ++
1 file changed, 2 insertions(+)
create mode 100644 README.md
63
git pull == git fetch && git merge
REMOTE/ORIGIN
Your machineGithub
LOCAL STAGING/INDEX WORKSPACE
MASTER
ORIGIN/
MASTER
MASTER
ksylormiller:~/ohshitgit (master)$ git push
Counting objects: 8, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (5/5), 537 bytes | 0 bytes/s, done.
Total 5 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), completed with 1 local object.
To https://github.com/ksylor/fluent-example.git
8a97966..91f6790 master -> master
65
git push
REMOTE/ORIGIN
Your machineGithub
LOCAL STAGING/INDEX WORKSPACE
ORIGIN/
MASTER
MASTERMASTER
Rebase all the things!
REMOTE/ORIGIN
Your machineGithub
LOCAL STAGING/INDEX WORKSPACE
MASTER
ORIGIN/
MASTER
MASTER
ksylormiller:~/ohshitgit (master)$ git rebase origin/master
First, rewinding head to replay your work on top of it...
Applying: Meaningful commit message
69
git rebase
REMOTE/ORIGIN
Your machineGithub
LOCAL STAGING/INDEX WORKSPACE
MASTER
ORIGIN/
MASTER
MASTER
REMOTE/ORIGIN
Your machineGithub
LOCAL STAGING/INDEX WORKSPACE
MASTER
ORIGIN/
MASTER
MASTER
ksylormiller:~/ohshitgit (master)$ git pull --rebase
First, rewinding head to replay your work on top of it...
Applying: Meaningful commit message
72
git pull --rebase == git fetch && git rebase
REMOTE/ORIGIN
Your machineGithub
LOCAL STAGING/INDEX WORKSPACE
MASTER
ORIGIN/
MASTER
MASTER
ksylormiller:~/ohshitgit (master)$ git push
Counting objects: 5, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 331 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To https://github.com/ksylor/fluent-example.git
f6e51fd..3c2335c master -> master
74
git push
REMOTE/ORIGIN
Your machineGithub
LOCAL STAGING/INDEX WORKSPACE
MASTER
ORIGIN/
MASTER
MASTER
REMOTE/ORIGIN
Your machineGithub
LOCAL STAGING/INDEX WORKSPACE
MASTER
ORIGIN/
MASTER
MASTER
Viewing history
Changing history
Viewing and changing history
Viewing history
Changing history
Viewing and changing history
View the history of a branch
1668d2f
HEAD
a4df41aaec56116dab6a7 912bde5
master
B C D E F
ksylormiller:~/ohshitgit (master)$ git log
commit 3c2335c50a1ad48a283a475e3d3f9ac445a20ff5
Author: Katie Sylor-Miller <katie@ohshitgit.com>
Date: Thu Jun 8 23:42:05 2017 -0400
Another awesome commit
A detailed message about this commit goes here
commit f6e51fdd6650c7bbc39895c0392ec6a9fb5a9c15
Author: Someone else <someone@ohshitgit.com>
Date: Thu Jun 8 23:39:36 2017 -0400
Oh hai this is a change
commit 4f9a80ff7732f252ffbe7841e96748707da1a78d
80
git log
by Etsy seller Birdwoodshack
git reflog
is your magic
time machine
ksylormiller:~/ohshitgit (master)$ git reflog
3c2335c HEAD@{0}: rebase finished: returning to refs/heads/master
3c2335c HEAD@{1}: pull --rebase: lolz
f6e51fd HEAD@{2}: pull --rebase: checkout f6e51fdd6650c7bbc39895c0392ec6a9fb5a9c15
f4f4d99 HEAD@{3}: reset: moving to HEAD@{4}
f6e51fd HEAD@{4}: reset: moving to HEAD~
1ecad3a HEAD@{5}: rebase finished: returning to refs/heads/master
1ecad3a HEAD@{6}: rebase: lolz
f6e51fd HEAD@{7}: rebase: checkout origin/master
f4f4d99 HEAD@{8}: commit: lolz
4f9a80f HEAD@{9}: commit: Another awesome commit
4875652 HEAD@{10}: commit: Meaningful commit message
82
git reflog
HEAD notation
• HEAD@{index} : go to a specific point
• HEAD~ == HEAD@{currentindex+1} : back one action
• HEAD~x == HEAD@{currentindex+x} : back x actions
• Or, you can always reference by hash
ksylormiller:~/ohshitgit (master)$ git show HEAD@{8}
commit f4f4d996d44bbf824cdd22ace9e6d154d27c9a5d
Author: Katie Sylor-Miller <katie@ohshitgit.com>
Date: Thu Jun 8 23:42:05 2017 -0400
lolz
diff --git a/bar.php b/bar.php
index f81fce0..bdd3cb3 100644
--- a/bar.php
+++ b/bar.php
@@ -1 +1,4 @@
this is a file
-with nothing
+with some lolz
84
git show
ksylormiller:~/ohshitgit (master)$ git checkout HEAD@{8}
Note: checking out 'HEAD@{8}'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b new_branch_name
HEAD is now at a4df41a... Merge remote-tracking branch 'origin/master'
ksylormiller:~/ohshitgit (master) ((detached from a4df41a))$
85
git checkout
A detached HEAD is when your
HEAD points directly to a
commit or a tracking branch
(not an editable branch)
WTF is a detached HEAD?
post-checkout detached HEAD
1668d2f
HEAD
a4df41aaec56116dab6a7 912bde5
master
B C D E F
Viewing history
Changing history
Viewing and changing history
Changing history of a branch
1668d2f
HEAD
a4df41aaec56116dab6a7
master
B C D E F
912bde5
git reset brings you back to a
previous state in history,
undoing everything that
changed between now and then
Hit the reset button
ksylormiller:~/ohshitgit (master)$ git reflog
1668d2f HEAD@{0}: rebase finished: returning to refs/heads/master
3c2335c HEAD@{1}: pull --rebase: lolz
912bde5 HEAD@{2}: pull --rebase: checkout
f6e51fdd6650c7bbc39895c0392ec6a9fb5a9c15
f4f4d99 HEAD@{3}: commit: lolz
91
git reflog
ksylormiller:~/ohshitgit (master)$ git reset HEAD@{3}
Unstaged changes after reset:
M foo.php
92
git reset
Three basic types of resetting
Discards the changes
from the affected
commits
Leaves the changes
from the affected
commits in the
workspace (default)
--hard--mixed--soft
Leaves the changes
from the affected
commits in staging
Post-reset
1668d2f
HEAD
a4df41aaec56116dab6a7
master
Changes move
to the index
or workspace
or discarded
912bde5
B C D E F
Disclaimer: never
change public history
git revert creates a new commit
that undoes the changes in the
specified commit(s)
Undo a public commit
ksylormiller:~/ohshitgit (master)$ git revert f4f4d99
97
git revert
Revert "lolz"
This reverts commit f4f4d996d44bbf824cdd22ace9e6d154d27c9a5d.
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Your branch is ahead of 'origin/master' by 3 commits.
# (use "git push" to publish your local commits)
#
# Changes to be committed:
# modified: bar.php
#
~
"~/ohshitgit/.git/COMMIT_EDITMSG" 14L, 450C
98
ugh, vim again
ksylormiller:~/ohshitgit (master)$ git revert
f4f4d996d44bbf824cdd22ace9e6d154d27c9a5d
[master b483271] Revert "lolz"
1 file changed, 3 deletions(-)
99
git revert complete
Post-revert
1668d2f
HEAD
a4df41aaec5611 b75fb8b912bde5
master
reverts changes from
C D E F G
Always be committing
Always be branching
Avoiding & getting out of messes
Always be committing
Always be branching
Avoiding & getting out of messes
Lots of commits are better
• Commits are cheap and easy
• Save your progress over time
• Easier to backtrack if you screw up
• Less chance of committing the wrong thing when you are
reviewing small changes
Problem: Committing
the wrong thing
• Set up your command line to show you what branch you are on
• Use .gitignore to your advantage
• Remember git status is your BFF
• Understand how staging works (subsequent changes to a file
are not reflected)
Avoid the problem: Committing the wrong thing
ksylormiller:~/ohshitgit (master)$ git commit --amend
# insert vim here
106
Fix the problem: Entering the wrong commit message
ksylormiller:~/ohshitgit (master)$ git commit --amend
[master f0c2e62] My correct commit message
1 file changed, 3 deletions(-)
107
Fix the problem: Entering the wrong commit message
ksylormiller:~/ohshitgit (master)$ git add file/i/forgot/to/commit.ext
ksylormiller:~/ohshitgit (master)$ git commit --amend —no-edit
[master 014035a] My correct commit message
1 file changed, 1 insertion(+), 3 deletions(-)
108
Fix the problem: Forgetting to commit a file
Always be committing
Always be branching
Avoiding & getting out of messes
• Safety net: you aren’t changing master directly until your
feature is ready for prime time
• Allows you to switch between tasks/manage unrelated
changes
• Share larger features or long-term work with your team and
preserve its history
• Caution: Don’t use long-lived feature branches
Why a feature branch workflow is better
Problem: Staying up
to date
MERGE
Adds a new commit to
your feature branch.
You are resolving
potential conflicts created
by other people’s code.
Replays your commits on
top of the latest of master.
You are resolving
potential conflicts created
by your own code.
REBASE
Merge vs. rebase
Problem: Rebasing
kinda sucks
ksylormiller:~/ohshitgit (feature-branch)$ git rebase -i HEAD~2
114
Avoid the problem: Combine commits before rebasing
REMOTE/ORIGIN
Your machineGithub
LOCAL STAGING/INDEX WORKSPACE
MASTER
ORIGIN/
MASTER
FEATURE-
BRANCH
MASTER
pick 2f5bae4 example feature branch
pick 0ee2a20 Another commit
# Rebase aaff258..0ee2a20 onto aaff258
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
~
"~/ohshitgit/.git/rebase-merge/git-rebase-todo" 20L, 670C
116
Interactive rebase
pick 2f5bae4 example feature branch
fixup 0ee2a20 Another commit
# Rebase aaff258..0ee2a20 onto aaff258
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
~
"~/ohshitgit/.git/rebase-merge/git-rebase-todo" 20L, 670C
117
Interactive rebase
ksylormiller:~/ohshitgit (feature-branch)$ git rebase -i HEAD~2
[detached HEAD a682e3a] example feature branch
3 files changed, 5 insertions(+)
Successfully rebased and updated refs/heads/feature-branch.
118
Avoid rebasing problems: combine commits
REMOTE/ORIGIN
Your machineGithub
LOCAL STAGING/INDEX WORKSPACE
MASTER
ORIGIN/
MASTER
FEATURE-
BRANCH
MASTER
Problem: Merging
back into master
REMOTE/ORIGIN
Your machineGithub
LOCAL STAGING/INDEX WORKSPACE
MASTER
FEATURE-
BRANCH
Problem: Merge
conflicts
• Update your local master and origin/master all.the.time.
• Rebase your feature branches to stay up to date
• Periodically squash feature branch commits to reduce the
number of conflicts to resolve (esp. when rebasing)
• Communication with teammates
• If things don’t seem right, abort!
Avoid the problem: Merge conflicts
ksylormiller:~/ohshitgit (master)$ git diff --check
foo.php:1: leftover conflict marker
foo.php:4: leftover conflict marker
foo.php:5: trailing whitespace.
+fdfakadsfldjfasd^M
foo.php:6: leftover conflict marker
126
check your diffs before committing!
That’s it! Easy, right?
• Understand the fundamentals (commits, branches, HEAD,
history, workflows)
• Know how to view & fix history (reflog is git’s magic time
machine)
• Always be committing
• Always be branching (but stay up to date)
• DON’T PANIC, everything is fixable
Avoid git messes in the first place
If all else fails
ohshitgit.com
Thank you!
@ksylor
@ohshitgit

More Related Content

What's hot

Git for beginner
Git for beginnerGit for beginner
Git for beginner
Trung Huynh
 
Git
Git Git
Git Basics at Rails Underground
Git Basics at Rails UndergroundGit Basics at Rails Underground
Git Basics at Rails Underground
Ariejan de Vroom
 
Git session Dropsolid.com
Git session Dropsolid.comGit session Dropsolid.com
Git session Dropsolid.com
dropsolid
 
Learn Git Basics
Learn Git BasicsLearn Git Basics
Learn Git Basics
Prakash Dantuluri
 
Git for the absolute beginners
Git for the absolute beginnersGit for the absolute beginners
Git for the absolute beginners
Gabriele Baldassarre
 
Basic Git Intro
Basic Git IntroBasic Git Intro
Basic Git Intro
Yoad Snapir
 
Gitting out of trouble
Gitting out of troubleGitting out of trouble
Gitting out of trouble
Jon Senchyna
 
Introduction to Git and GitHub
Introduction to Git and GitHubIntroduction to Git and GitHub
Basic Git
Basic GitBasic Git
Basic Git
Knut Haugen
 
Git Real
Git RealGit Real
Git Real
Gong Haibing
 
Git & GitHub WorkShop
Git & GitHub WorkShopGit & GitHub WorkShop
Git & GitHub WorkShop
SheilaJimenezMorejon
 
Git - Basic Crash Course
Git - Basic Crash CourseGit - Basic Crash Course
Git - Basic Crash Course
Nilay Binjola
 
Git tips and tricks
Git   tips and tricksGit   tips and tricks
Git tips and tricks
Chris Ballance
 
Grokking opensource with github
Grokking opensource with githubGrokking opensource with github
Grokking opensource with github
GoogleDeveloperStude4
 
Use Git like a pro - condensed
Use Git like a pro - condensedUse Git like a pro - condensed
Use Git like a pro - condensed
Jesús Miguel Benito Calzada
 
Git tutorial
Git tutorialGit tutorial
Git tutorial
Elli Kanal
 
A Brief Introduction to Working with Git
A Brief Introduction to Working with GitA Brief Introduction to Working with Git
A Brief Introduction to Working with Git
Philip Langer
 
Git tutorial
Git tutorialGit tutorial
Git tutorial
Pham Quy (Jack)
 

What's hot (20)

Git for beginner
Git for beginnerGit for beginner
Git for beginner
 
Git
Git Git
Git
 
Git Basics at Rails Underground
Git Basics at Rails UndergroundGit Basics at Rails Underground
Git Basics at Rails Underground
 
Git session Dropsolid.com
Git session Dropsolid.comGit session Dropsolid.com
Git session Dropsolid.com
 
Learn Git Basics
Learn Git BasicsLearn Git Basics
Learn Git Basics
 
Git for the absolute beginners
Git for the absolute beginnersGit for the absolute beginners
Git for the absolute beginners
 
Basic Git Intro
Basic Git IntroBasic Git Intro
Basic Git Intro
 
Gitting out of trouble
Gitting out of troubleGitting out of trouble
Gitting out of trouble
 
Introduction to Git and GitHub
Introduction to Git and GitHubIntroduction to Git and GitHub
Introduction to Git and GitHub
 
Basic Git
Basic GitBasic Git
Basic Git
 
Git Real
Git RealGit Real
Git Real
 
Git & GitHub WorkShop
Git & GitHub WorkShopGit & GitHub WorkShop
Git & GitHub WorkShop
 
Git - Basic Crash Course
Git - Basic Crash CourseGit - Basic Crash Course
Git - Basic Crash Course
 
Git tips and tricks
Git   tips and tricksGit   tips and tricks
Git tips and tricks
 
Grokking opensource with github
Grokking opensource with githubGrokking opensource with github
Grokking opensource with github
 
Use Git like a pro - condensed
Use Git like a pro - condensedUse Git like a pro - condensed
Use Git like a pro - condensed
 
Git tutorial
Git tutorialGit tutorial
Git tutorial
 
A Brief Introduction to Working with Git
A Brief Introduction to Working with GitA Brief Introduction to Working with Git
A Brief Introduction to Working with Git
 
Git tutorial
Git tutorialGit tutorial
Git tutorial
 
Git real slides
Git real slidesGit real slides
Git real slides
 

Similar to Git-ing out of your git messes - Fluent Conf 2017

Introduction to Git (Greg Lonnon)
Introduction to Git (Greg Lonnon)Introduction to Git (Greg Lonnon)
Introduction to Git (Greg Lonnon)
Boise Web Technologies Group
 
GIT: Content-addressable filesystem and Version Control System
GIT: Content-addressable filesystem and Version Control SystemGIT: Content-addressable filesystem and Version Control System
GIT: Content-addressable filesystem and Version Control System
Tommaso Visconti
 
Git basic commands
Git basic commandsGit basic commands
Git basic commands
Adarsh Konchady
 
Version Control & Git
Version Control & GitVersion Control & Git
Version Control & Git
Jason Byrne
 
Recovering From Git Mistakes - Nina Zakharenko
Recovering From Git Mistakes - Nina ZakharenkoRecovering From Git Mistakes - Nina Zakharenko
Recovering From Git Mistakes - Nina Zakharenko
Nina Zakharenko
 
Honestly Git Playground 20190221
Honestly Git Playground 20190221Honestly Git Playground 20190221
Honestly Git Playground 20190221
Shinho Kang
 
Git undo
Git undoGit undo
Git undo
Avilay Parekh
 
Git internals
Git internalsGit internals
Git internals
Haggai Philip Zagury
 
Git walkthrough
Git walkthroughGit walkthrough
Git walkthrough
Bimal Jain
 
Nicola Iarocci - Git stories from the front line - Codemotion Milan 2017
Nicola Iarocci - Git stories from the front line - Codemotion Milan 2017Nicola Iarocci - Git stories from the front line - Codemotion Milan 2017
Nicola Iarocci - Git stories from the front line - Codemotion Milan 2017
Codemotion
 
Gitlikeapro 2019
Gitlikeapro 2019Gitlikeapro 2019
Git
GitGit
Did you git yet?
Did you git yet?Did you git yet?
Did you git yet?
Michael Fong
 
Git the Docs: A fun, hands-on introduction to version control
Git the Docs: A fun, hands-on introduction to version controlGit the Docs: A fun, hands-on introduction to version control
Git the Docs: A fun, hands-on introduction to version control
Becky Todd
 
Exprimiendo GIT
Exprimiendo GITExprimiendo GIT
Exprimiendo GIT
betabeers
 
Git tutorial
Git tutorialGit tutorial
Git tutorial
mobaires
 
Git cheat sheet with diagram-5.pdf
Git cheat sheet with diagram-5.pdfGit cheat sheet with diagram-5.pdf
Git cheat sheet with diagram-5.pdf
NiranjanKumarGanjiku1
 
Keep you GIT history clean
Keep you GIT history cleanKeep you GIT history clean
Keep you GIT history clean
tomasbro
 
Introducción a git y GitHub
Introducción a git y GitHubIntroducción a git y GitHub
Introducción a git y GitHub
Lucas Videla
 

Similar to Git-ing out of your git messes - Fluent Conf 2017 (20)

Introduction to Git (Greg Lonnon)
Introduction to Git (Greg Lonnon)Introduction to Git (Greg Lonnon)
Introduction to Git (Greg Lonnon)
 
GIT: Content-addressable filesystem and Version Control System
GIT: Content-addressable filesystem and Version Control SystemGIT: Content-addressable filesystem and Version Control System
GIT: Content-addressable filesystem and Version Control System
 
Git basic commands
Git basic commandsGit basic commands
Git basic commands
 
Version Control & Git
Version Control & GitVersion Control & Git
Version Control & Git
 
Gittalk
GittalkGittalk
Gittalk
 
Recovering From Git Mistakes - Nina Zakharenko
Recovering From Git Mistakes - Nina ZakharenkoRecovering From Git Mistakes - Nina Zakharenko
Recovering From Git Mistakes - Nina Zakharenko
 
Honestly Git Playground 20190221
Honestly Git Playground 20190221Honestly Git Playground 20190221
Honestly Git Playground 20190221
 
Git undo
Git undoGit undo
Git undo
 
Git internals
Git internalsGit internals
Git internals
 
Git walkthrough
Git walkthroughGit walkthrough
Git walkthrough
 
Nicola Iarocci - Git stories from the front line - Codemotion Milan 2017
Nicola Iarocci - Git stories from the front line - Codemotion Milan 2017Nicola Iarocci - Git stories from the front line - Codemotion Milan 2017
Nicola Iarocci - Git stories from the front line - Codemotion Milan 2017
 
Gitlikeapro 2019
Gitlikeapro 2019Gitlikeapro 2019
Gitlikeapro 2019
 
Git
GitGit
Git
 
Did you git yet?
Did you git yet?Did you git yet?
Did you git yet?
 
Git the Docs: A fun, hands-on introduction to version control
Git the Docs: A fun, hands-on introduction to version controlGit the Docs: A fun, hands-on introduction to version control
Git the Docs: A fun, hands-on introduction to version control
 
Exprimiendo GIT
Exprimiendo GITExprimiendo GIT
Exprimiendo GIT
 
Git tutorial
Git tutorialGit tutorial
Git tutorial
 
Git cheat sheet with diagram-5.pdf
Git cheat sheet with diagram-5.pdfGit cheat sheet with diagram-5.pdf
Git cheat sheet with diagram-5.pdf
 
Keep you GIT history clean
Keep you GIT history cleanKeep you GIT history clean
Keep you GIT history clean
 
Introducción a git y GitHub
Introducción a git y GitHubIntroducción a git y GitHub
Introducción a git y GitHub
 

More from Katie Sylor-Miller

Happy Browser, Happy User! NY Web Performance Meetup 9/20/19
Happy Browser, Happy User! NY Web Performance Meetup 9/20/19Happy Browser, Happy User! NY Web Performance Meetup 9/20/19
Happy Browser, Happy User! NY Web Performance Meetup 9/20/19
Katie Sylor-Miller
 
Happy Browser, Happy User! WordSesh 2019
Happy Browser, Happy User! WordSesh 2019Happy Browser, Happy User! WordSesh 2019
Happy Browser, Happy User! WordSesh 2019
Katie Sylor-Miller
 
Happy Browser, Happy User! - PerfMatters Conference 2019
Happy Browser, Happy User! - PerfMatters Conference 2019Happy Browser, Happy User! - PerfMatters Conference 2019
Happy Browser, Happy User! - PerfMatters Conference 2019
Katie Sylor-Miller
 
Design Systems + Git = Success - Clarity Conference 2018
Design Systems + Git  = Success - Clarity Conference 2018Design Systems + Git  = Success - Clarity Conference 2018
Design Systems + Git = Success - Clarity Conference 2018
Katie Sylor-Miller
 
Raiders of the Fast Start: Frontend Performance Archaeology - Performance.now...
Raiders of the Fast Start: Frontend Performance Archaeology - Performance.now...Raiders of the Fast Start: Frontend Performance Archaeology - Performance.now...
Raiders of the Fast Start: Frontend Performance Archaeology - Performance.now...
Katie Sylor-Miller
 
Raiders of the Fast Start: Frontend Performance Achaeology - Fluent 2018
Raiders of the Fast Start: Frontend Performance Achaeology - Fluent 2018Raiders of the Fast Start: Frontend Performance Achaeology - Fluent 2018
Raiders of the Fast Start: Frontend Performance Achaeology - Fluent 2018
Katie Sylor-Miller
 
Images for Everyone - ImageCon 2018
Images for Everyone - ImageCon 2018Images for Everyone - ImageCon 2018
Images for Everyone - ImageCon 2018
Katie Sylor-Miller
 
Raiders of the Fast Start: Frontend Performance Archaeology PerfmattersConf 2018
Raiders of the Fast Start: Frontend Performance Archaeology PerfmattersConf 2018Raiders of the Fast Start: Frontend Performance Archaeology PerfmattersConf 2018
Raiders of the Fast Start: Frontend Performance Archaeology PerfmattersConf 2018
Katie Sylor-Miller
 
Putting the t in team
Putting the t in teamPutting the t in team
Putting the t in team
Katie Sylor-Miller
 

More from Katie Sylor-Miller (9)

Happy Browser, Happy User! NY Web Performance Meetup 9/20/19
Happy Browser, Happy User! NY Web Performance Meetup 9/20/19Happy Browser, Happy User! NY Web Performance Meetup 9/20/19
Happy Browser, Happy User! NY Web Performance Meetup 9/20/19
 
Happy Browser, Happy User! WordSesh 2019
Happy Browser, Happy User! WordSesh 2019Happy Browser, Happy User! WordSesh 2019
Happy Browser, Happy User! WordSesh 2019
 
Happy Browser, Happy User! - PerfMatters Conference 2019
Happy Browser, Happy User! - PerfMatters Conference 2019Happy Browser, Happy User! - PerfMatters Conference 2019
Happy Browser, Happy User! - PerfMatters Conference 2019
 
Design Systems + Git = Success - Clarity Conference 2018
Design Systems + Git  = Success - Clarity Conference 2018Design Systems + Git  = Success - Clarity Conference 2018
Design Systems + Git = Success - Clarity Conference 2018
 
Raiders of the Fast Start: Frontend Performance Archaeology - Performance.now...
Raiders of the Fast Start: Frontend Performance Archaeology - Performance.now...Raiders of the Fast Start: Frontend Performance Archaeology - Performance.now...
Raiders of the Fast Start: Frontend Performance Archaeology - Performance.now...
 
Raiders of the Fast Start: Frontend Performance Achaeology - Fluent 2018
Raiders of the Fast Start: Frontend Performance Achaeology - Fluent 2018Raiders of the Fast Start: Frontend Performance Achaeology - Fluent 2018
Raiders of the Fast Start: Frontend Performance Achaeology - Fluent 2018
 
Images for Everyone - ImageCon 2018
Images for Everyone - ImageCon 2018Images for Everyone - ImageCon 2018
Images for Everyone - ImageCon 2018
 
Raiders of the Fast Start: Frontend Performance Archaeology PerfmattersConf 2018
Raiders of the Fast Start: Frontend Performance Archaeology PerfmattersConf 2018Raiders of the Fast Start: Frontend Performance Archaeology PerfmattersConf 2018
Raiders of the Fast Start: Frontend Performance Archaeology PerfmattersConf 2018
 
Putting the t in team
Putting the t in teamPutting the t in team
Putting the t in team
 

Recently uploaded

Recycled Concrete Aggregate in Construction Part III
Recycled Concrete Aggregate in Construction Part IIIRecycled Concrete Aggregate in Construction Part III
Recycled Concrete Aggregate in Construction Part III
Aditya Rajan Patra
 
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
bakpo1
 
RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...
RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...
RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...
thanhdowork
 
Hierarchical Digital Twin of a Naval Power System
Hierarchical Digital Twin of a Naval Power SystemHierarchical Digital Twin of a Naval Power System
Hierarchical Digital Twin of a Naval Power System
Kerry Sado
 
Swimming pool mechanical components design.pptx
Swimming pool  mechanical components design.pptxSwimming pool  mechanical components design.pptx
Swimming pool mechanical components design.pptx
yokeleetan1
 
Forklift Classes Overview by Intella Parts
Forklift Classes Overview by Intella PartsForklift Classes Overview by Intella Parts
Forklift Classes Overview by Intella Parts
Intella Parts
 
Water Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdfWater Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation & Control
 
Student information management system project report ii.pdf
Student information management system project report ii.pdfStudent information management system project report ii.pdf
Student information management system project report ii.pdf
Kamal Acharya
 
14 Template Contractual Notice - EOT Application
14 Template Contractual Notice - EOT Application14 Template Contractual Notice - EOT Application
14 Template Contractual Notice - EOT Application
SyedAbiiAzazi1
 
PPT on GRP pipes manufacturing and testing
PPT on GRP pipes manufacturing and testingPPT on GRP pipes manufacturing and testing
PPT on GRP pipes manufacturing and testing
anoopmanoharan2
 
Literature Review Basics and Understanding Reference Management.pptx
Literature Review Basics and Understanding Reference Management.pptxLiterature Review Basics and Understanding Reference Management.pptx
Literature Review Basics and Understanding Reference Management.pptx
Dr Ramhari Poudyal
 
Water billing management system project report.pdf
Water billing management system project report.pdfWater billing management system project report.pdf
Water billing management system project report.pdf
Kamal Acharya
 
Modelagem de um CSTR com reação endotermica.pdf
Modelagem de um CSTR com reação endotermica.pdfModelagem de um CSTR com reação endotermica.pdf
Modelagem de um CSTR com reação endotermica.pdf
camseq
 
Technical Drawings introduction to drawing of prisms
Technical Drawings introduction to drawing of prismsTechnical Drawings introduction to drawing of prisms
Technical Drawings introduction to drawing of prisms
heavyhaig
 
Harnessing WebAssembly for Real-time Stateless Streaming Pipelines
Harnessing WebAssembly for Real-time Stateless Streaming PipelinesHarnessing WebAssembly for Real-time Stateless Streaming Pipelines
Harnessing WebAssembly for Real-time Stateless Streaming Pipelines
Christina Lin
 
Tutorial for 16S rRNA Gene Analysis with QIIME2.pdf
Tutorial for 16S rRNA Gene Analysis with QIIME2.pdfTutorial for 16S rRNA Gene Analysis with QIIME2.pdf
Tutorial for 16S rRNA Gene Analysis with QIIME2.pdf
aqil azizi
 
Governing Equations for Fundamental Aerodynamics_Anderson2010.pdf
Governing Equations for Fundamental Aerodynamics_Anderson2010.pdfGoverning Equations for Fundamental Aerodynamics_Anderson2010.pdf
Governing Equations for Fundamental Aerodynamics_Anderson2010.pdf
WENKENLI1
 
MCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdfMCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdf
Osamah Alsalih
 
basic-wireline-operations-course-mahmoud-f-radwan.pdf
basic-wireline-operations-course-mahmoud-f-radwan.pdfbasic-wireline-operations-course-mahmoud-f-radwan.pdf
basic-wireline-operations-course-mahmoud-f-radwan.pdf
NidhalKahouli2
 
Final project report on grocery store management system..pdf
Final project report on grocery store management system..pdfFinal project report on grocery store management system..pdf
Final project report on grocery store management system..pdf
Kamal Acharya
 

Recently uploaded (20)

Recycled Concrete Aggregate in Construction Part III
Recycled Concrete Aggregate in Construction Part IIIRecycled Concrete Aggregate in Construction Part III
Recycled Concrete Aggregate in Construction Part III
 
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
 
RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...
RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...
RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...
 
Hierarchical Digital Twin of a Naval Power System
Hierarchical Digital Twin of a Naval Power SystemHierarchical Digital Twin of a Naval Power System
Hierarchical Digital Twin of a Naval Power System
 
Swimming pool mechanical components design.pptx
Swimming pool  mechanical components design.pptxSwimming pool  mechanical components design.pptx
Swimming pool mechanical components design.pptx
 
Forklift Classes Overview by Intella Parts
Forklift Classes Overview by Intella PartsForklift Classes Overview by Intella Parts
Forklift Classes Overview by Intella Parts
 
Water Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdfWater Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdf
 
Student information management system project report ii.pdf
Student information management system project report ii.pdfStudent information management system project report ii.pdf
Student information management system project report ii.pdf
 
14 Template Contractual Notice - EOT Application
14 Template Contractual Notice - EOT Application14 Template Contractual Notice - EOT Application
14 Template Contractual Notice - EOT Application
 
PPT on GRP pipes manufacturing and testing
PPT on GRP pipes manufacturing and testingPPT on GRP pipes manufacturing and testing
PPT on GRP pipes manufacturing and testing
 
Literature Review Basics and Understanding Reference Management.pptx
Literature Review Basics and Understanding Reference Management.pptxLiterature Review Basics and Understanding Reference Management.pptx
Literature Review Basics and Understanding Reference Management.pptx
 
Water billing management system project report.pdf
Water billing management system project report.pdfWater billing management system project report.pdf
Water billing management system project report.pdf
 
Modelagem de um CSTR com reação endotermica.pdf
Modelagem de um CSTR com reação endotermica.pdfModelagem de um CSTR com reação endotermica.pdf
Modelagem de um CSTR com reação endotermica.pdf
 
Technical Drawings introduction to drawing of prisms
Technical Drawings introduction to drawing of prismsTechnical Drawings introduction to drawing of prisms
Technical Drawings introduction to drawing of prisms
 
Harnessing WebAssembly for Real-time Stateless Streaming Pipelines
Harnessing WebAssembly for Real-time Stateless Streaming PipelinesHarnessing WebAssembly for Real-time Stateless Streaming Pipelines
Harnessing WebAssembly for Real-time Stateless Streaming Pipelines
 
Tutorial for 16S rRNA Gene Analysis with QIIME2.pdf
Tutorial for 16S rRNA Gene Analysis with QIIME2.pdfTutorial for 16S rRNA Gene Analysis with QIIME2.pdf
Tutorial for 16S rRNA Gene Analysis with QIIME2.pdf
 
Governing Equations for Fundamental Aerodynamics_Anderson2010.pdf
Governing Equations for Fundamental Aerodynamics_Anderson2010.pdfGoverning Equations for Fundamental Aerodynamics_Anderson2010.pdf
Governing Equations for Fundamental Aerodynamics_Anderson2010.pdf
 
MCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdfMCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdf
 
basic-wireline-operations-course-mahmoud-f-radwan.pdf
basic-wireline-operations-course-mahmoud-f-radwan.pdfbasic-wireline-operations-course-mahmoud-f-radwan.pdf
basic-wireline-operations-course-mahmoud-f-radwan.pdf
 
Final project report on grocery store management system..pdf
Final project report on grocery store management system..pdfFinal project report on grocery store management system..pdf
Final project report on grocery store management system..pdf
 

Git-ing out of your git messes - Fluent Conf 2017