Slide 1

Slide 1 text

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

Slide 16

Slide 16 text

DEMODAY git merge-base 016 o---release-x / ---o---o---o---o---o---dev

Slide 17

Slide 17 text

DEMODAY git merge-base 1. Create a fix branch at a merge base > git checkout -b fix-x $(git merge-base develop release-x) 017

Slide 18

Slide 18 text

DEMODAY git merge-base 018 o---release-x / ---o---o---o---o---o---dev | fix-x

Slide 19

Slide 19 text

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

Slide 33

Slide 33 text

DEMODAY git merge-base Questions, comments, Git stories .. THANKS! September 2nd, 2019