DEMODAY
git merge-base
dive deeper
Location, DD/MM/YYYY
Name Surname, job title
Title of the talk
Git merge-base
September 2nd, 2019
YOU SHOULD UNDERSTAND AND USE
Slide 2
Slide 2 text
DEMODAY
git merge-base
git merge-base
finds the best common ancestor
between two commits
to use in a three-way merge.
02
Slide 3
Slide 3 text
DEMODAY
git merge-base
Ancestor is a parent
or a parent of a parent (grandparent)
or a great-grandparent,
or a great-great-grandparent
and so forth
03
Slide 4
Slide 4 text
DEMODAY
git merge-base
One common ancestor X is better than
another common ancestor Y if
Y is an ancestor of X.
04
Slide 5
Slide 5 text
DEMODAY
git merge-base
A common ancestor that does not
have any better common ancestor is a
best common ancestor, i.e.
a merge base.
05
Slide 6
Slide 6 text
DEMODAY
git merge base
Example
HERE YOU GO, HAVE AN
06
Slide 7
Slide 7 text
DEMODAY
git merge-base
“git merge-base A B” is 1:
07
o---o---o---B
/
---2---1---o---o---o---A
Slide 8
Slide 8 text
DEMODAY
git merge-base
More than two commits as an
argument?
A B C ?
08
Slide 9
Slide 9 text
DEMODAY
git merge-base
Then the first commit (A) is the first
argument, other commits (B C) will be
merged* to create a second argument.
09
Slide 10
Slide 10 text
DEMODAY
git merge-base
“git merge-base A B C” is 1:
010
o----o----o----o----C
/ o----o----o----B
/ /
---2----1----o----o----o----A
Slide 11
Slide 11 text
DEMODAY
git merge-base 02
Is awesome!
GIT MERGE-BASE
Slide 12
Slide 12 text
DEMODAY
git merge-base 02
Is useful!
GIT MERGE-BASE
Slide 13
Slide 13 text
DEMODAY
git merge-base
For developing a fix to a release and
dev branches at the same time.
013
Slide 14
Slide 14 text
DEMODAY
git merge base
Something has gone wrong with
the release
We need to fix it fast!
IMAGINE THAT
014
Slide 15
Slide 15 text
DEMODAY
git merge-base
1. ASAP: Fix the release
2. Merge the fix to dev so development
can continue
015
DEMODAY
git merge-base
2. Fix the in fix-x branch
3. At release-x merge in the fix
> git merge fix-x
4. Create and release another binary
5. At dev merge in the fix
> git merge fix-x
019
Slide 20
Slide 20 text
DEMODAY
git merge-base
One fix!
020
Slide 21
Slide 21 text
DEMODAY
git merge-base
Merged into two diverged branches!
021
Slide 22
Slide 22 text
DEMODAY
git merge-base
Did not get any merge conflicts!
022
Slide 23
Slide 23 text
DEMODAY
git merge-base
Everything would still be fine even if
these branches would be merged
between themselves.
023
Slide 24
Slide 24 text
DEMODAY
git merge-base
Because this is the same commit on
both branches.
024
Slide 25
Slide 25 text
DEMODAY
git merge-base
PS: Avoid cherry-picking like the
plague! It makes magic happen. When
you least expect it ..
025
Slide 26
Slide 26 text
DEMODAY
git merge-base 02
Is awesome!
GIT MERGE-BASE
Slide 27
Slide 27 text
DEMODAY
git merge base
Something?
OK, COOL.. DID I FORGET
027
Slide 28
Slide 28 text
DEMODAY
git merge-base 028
git merge-base finds best common
ancestor(s) between two commits to
use in a three-way merge.
Slide 29
Slide 29 text
DEMODAY
git merge base
Bonus content
SOME
029
Slide 30
Slide 30 text
DEMODAY
git merge-base 030
How does Git know to merge changes?
Slide 31
Slide 31 text
DEMODAY
git merge-base 031
..
amount = 15;
..
..
amount = 3;
..
File A File B
Slide 32
Slide 32 text
DEMODAY
git merge-base 032
..
amount = 15;
..
..
amount = 3;
..
File A File B
..
amount = 3;
..
Common ancestor