Git merge-base

48b9b8ec59a8c91e180804b706ef91ac?s=47 Harri Kirik
September 02, 2019

Git merge-base

How git merge-base is awesome and can help you out in difficult situations.

48b9b8ec59a8c91e180804b706ef91ac?s=128

Harri Kirik

September 02, 2019
Tweet

Transcript

  1. 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
  2. DEMODAY git merge-base git merge-base finds the best common ancestor

    between two commits to use in a three-way merge. 02
  3. 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
  4. DEMODAY git merge-base One common ancestor X is better than

    another common ancestor Y if Y is an ancestor of X. 04
  5. 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
  6. DEMODAY git merge base Example HERE YOU GO, HAVE AN

    06
  7. DEMODAY git merge-base “git merge-base A B” is 1: 07

    o---o---o---B / ---2---1---o---o---o---A
  8. DEMODAY git merge-base More than two commits as an argument?

    A B C ? 08
  9. 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
  10. 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
  11. DEMODAY git merge-base 02 Is awesome! GIT MERGE-BASE

  12. DEMODAY git merge-base 02 Is useful! GIT MERGE-BASE

  13. DEMODAY git merge-base For developing a fix to a release

    and dev branches at the same time. 013
  14. DEMODAY git merge base Something has gone wrong with the

    release We need to fix it fast! IMAGINE THAT 014
  15. DEMODAY git merge-base 1. ASAP: Fix the release 2. Merge

    the fix to dev so development can continue 015
  16. DEMODAY git merge-base 016 o---release-x / ---o---o---o---o---o---dev

  17. 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
  18. DEMODAY git merge-base 018 o---release-x / ---o---o---o---o---o---dev | fix-x

  19. 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
  20. DEMODAY git merge-base One fix! 020

  21. DEMODAY git merge-base Merged into two diverged branches! 021

  22. DEMODAY git merge-base Did not get any merge conflicts! 022

  23. DEMODAY git merge-base Everything would still be fine even if

    these branches would be merged between themselves. 023
  24. DEMODAY git merge-base Because this is the same commit on

    both branches. 024
  25. DEMODAY git merge-base PS: Avoid cherry-picking like the plague! It

    makes magic happen. When you least expect it .. 025
  26. DEMODAY git merge-base 02 Is awesome! GIT MERGE-BASE

  27. DEMODAY git merge base Something? OK, COOL.. DID I FORGET

    027
  28. DEMODAY git merge-base 028 git merge-base finds best common ancestor(s)

    between two commits to use in a three-way merge.
  29. DEMODAY git merge base Bonus content SOME 029

  30. DEMODAY git merge-base 030 How does Git know to merge

    changes?
  31. DEMODAY git merge-base 031 .. amount = 15; .. ..

    amount = 3; .. File A File B
  32. DEMODAY git merge-base 032 .. amount = 15; .. ..

    amount = 3; .. File A File B .. amount = 3; .. Common ancestor
  33. DEMODAY git merge-base Questions, comments, Git stories .. THANKS! September

    2nd, 2019