Slide 1

Slide 1 text

GIT MAGIC TRICKS CodeMobile UK 2018 1

Slide 2

Slide 2 text

ABOUT… XAVIER F. GOUCHET LEAD ANDROID ENGINEER AT WORKWELL FLUENT IN ANDROID SINCE CUPCAKE ON ALL SOCIAL NETWORKS @XGOUCHET 2

Slide 3

Slide 3 text

FOREWORD EDIT THE CONFIG FILES : Local: /…/repo/.git/config Global (per user) : ~/.gitconfig System : /etc/gitconfig [group] property = value 3

Slide 4

Slide 4 text

IN THE TERMINAL $ git config group.property "Foo" $ git config --global group.property "Bar" $ git config --system group.property "Baz" 4

Slide 5

Slide 5 text

ALIASES [alias] lg = log --pretty=format:"%Cyellow%h %ad %Cwhite%s" $ git lg 5

Slide 6

Slide 6 text

YOU'RE HERE ↓ [alias] # WTF was I working on earlier… ? wtf = "!git status --short --branch; echo -e '\nThe last 3 commits was :'; git lg -3 --numstat" 6

Slide 7

Slide 7 text

SHORT TERM MEMORY LOSS [alias] # log only my commits mine = lg --author="$(git config user.email)" # log my commits since yesterday standup = !git mine --since yesterday 7

Slide 8

Slide 8 text

TAKE OUT THE TRASH [alias] # dmb = delete-merged-branches dmb = "!git branch --no-color --merged | egrep -v "(^\*|master|develop)" | xargs -I{} git branch -d {}" 8

Slide 9

Slide 9 text

WHAT'S UP, DOC ? [alias] update = "!git pull -r && git dmb && git wtf" sync = "!git pull -r && git push" 9

Slide 10

Slide 10 text

REWRITING HISTORY [alias] # Amend last commit amend = commit --amend # Amend without prompting for a message update comend = commit --amend --no-edit # Create a fixup commit (git fixup 35d15a2) fixup = commit --fixup 10

Slide 11

Slide 11 text

CAN I HAVE SOME MORE, PLEASE ? [alias] # never push force ! please = push --force-with-lease 11

Slide 12

Slide 12 text

TO ERR IS HUMAN, BUT A REAL DISASTER NEEDS A GIT CLIENT [alias] # undo `git [add|rm] …` unstage = reset --mixed # undo `git commit …`, keep the changes uncommit = reset --soft HEAD^ # undo `git commit …`, drop the changes ⚠ rollback = reset --hard HEAD^ 12

Slide 13

Slide 13 text

I HAVE SEXDAILY... DISLEXIA... DAMN AUTOCORRECT! [help] # execute the mistyped command after 50 deciseconds (5s) autoCorrect = 50 [alias] cehcout = checkout cmomit = commit 13

Slide 14

Slide 14 text

AN ACCIDENT WAITING TO HAPPEN “Some fixes.” “Should work now… I think” “You won't believe what this developer did to fix the bug !” [alias] yolo = "!git add -a && commit -m "$(curl -s whatthecommit.com/index.txt)" 14

Slide 15

Slide 15 text

WANT MORE ? 🔎 .gitconfig on GitHub gists 🔎 git aliases on GitHub or just Google If you type it more than twice, make an alias of it 15

Slide 16

Slide 16 text

DEMO TIME 16

Slide 17

Slide 17 text

DEMO TIME 17

Slide 18

Slide 18 text

QUESTIONS 18

Slide 19

Slide 19 text

QUESTIONS 19

Slide 20

Slide 20 text

GIT HOOKS 20

Slide 21

Slide 21 text

GIT HOOKS NEXT TIME… MAYBE ? THANK YOU FOR YOUR ATTENTION 21