Slide 1

Slide 1 text

@slecache #codeurs2023 #git commit 44c85e62 (HEAD /> Codeurs en Seine 2023) Author: Sébastien Lecacheur <@slecache> Org: Odigo Date: Thu OCT 26 10:00:00 2023 +0000 Savez-vous vraiment comment fonctionne git ?

Slide 2

Slide 2 text

@slecache #codeurs2023 #git Commandes de porcelaine (porcelain commands) ● git add ● git commit ● git push ● git pull ● git branch ● git switch ● git merge ● git rebase ● … ❌

Slide 3

Slide 3 text

@slecache #codeurs2023 #git Commandes de plomberie (plumbing commands) ● git hash-object ● git cat-file ● git count-objects ● git show-refs ● … ✔

Slide 4

Slide 4 text

@slecache #codeurs2023 #git Pour maîtriser git, il ne faut pas apprendre les commandes mais apprendre son modèle.

Slide 5

Slide 5 text

@slecache #codeurs2023 #git Qu’est-ce que git ?

Slide 6

Slide 6 text

@slecache #codeurs2023 #git git est un… Distributed Revision Control System

Slide 7

Slide 7 text

@slecache #codeurs2023 #git git est un… Revision Control System

Slide 8

Slide 8 text

@slecache #codeurs2023 #git git est un… Simple Content Tracker

Slide 9

Slide 9 text

@slecache #codeurs2023 #git git est un… Simple Stupid Content Tracker ⌨

Slide 10

Slide 10 text

@slecache #codeurs2023 #git git est un… Persistent Map

Slide 11

Slide 11 text

@slecache #codeurs2023 #git Valeurs et clés séquence de bytes hash SHA-1 (20-byte) ⌨

Slide 12

Slide 12 text

@slecache #codeurs2023 #git git est une map "Langages" 94740132dbfaa30505c5ba4fbbf2db9846448f9d

Slide 13

Slide 13 text

@slecache #codeurs2023 #git Chaque objet dans git possède son propre et unique SHA-1.

Slide 14

Slide 14 text

@slecache #codeurs2023 #git git est une map persistante "Langages" 94740132dbfaa30505c5ba4fbbf2db9846448f9d ⌨

Slide 15

Slide 15 text

@slecache #codeurs2023 #git Chaque objet dans la base git est immuable.

Slide 16

Slide 16 text

@slecache #codeurs2023 #git git est un… Persistent Map

Slide 17

Slide 17 text

@slecache #codeurs2023 #git git est un… Simple Stupid Content Tracker ⌨

Slide 18

Slide 18 text

@slecache #codeurs2023 #git ./ tracks/ tracks.txt Langages 59d0 bb9a 9474 cb32 Put the tracks in this directory, one track per file. cc33 langages.txt README.txt Modèle - la base d’objets (first commit)

Slide 19

Slide 19 text

@slecache #codeurs2023 #git ./ tracks/ tracks.txt Langages 59d0 bb9a 9474 cb32 Put the tracks in this directory, one track per file. cc33 langages.txt README.txt df85 ./ 7460 Langages Architecture 0195 tracks.txt tracks/ Modèle - la base d’objets (versioning) ⌨

Slide 20

Slide 20 text

@slecache #codeurs2023 #git ./ tracks/ tracks.txt Langages 59d0 bb9a 9474 cb32 Put the tracks in this directory, one track per file. cc33 langages.txt README.txt df85 ./ 7460 Langages Architecture 0195 tracks.txt tracks/ mytag Modèle - la base d’objets (annotated tag)

Slide 21

Slide 21 text

@slecache #codeurs2023 #git Commits Trees Blobs Annotated Tags Modèle - les objets git

Slide 22

Slide 22 text

@slecache #codeurs2023 #git git est un… Simple Stupid Content Tracker

Slide 23

Slide 23 text

@slecache #codeurs2023 #git git est un… Revision Control System

Slide 24

Slide 24 text

@slecache #codeurs2023 #git Et si les branches git n’ étaient pas ce que vous croyez qu’elles sont ?

Slide 25

Slide 25 text

@slecache #codeurs2023 #git 59d0 df85 main La branche main ⌨

Slide 26

Slide 26 text

@slecache #codeurs2023 #git Une branche est une simple référence vers un commit.

Slide 27

Slide 27 text

@slecache #codeurs2023 #git 59d0 df85 main draft Ajout d’une branche ⌨

Slide 28

Slide 28 text

@slecache #codeurs2023 #git WARNING do not try this at work.

Slide 29

Slide 29 text

@slecache #codeurs2023 #git 59d0 df85 main draft HEAD La branche courante ⌨

Slide 30

Slide 30 text

@slecache #codeurs2023 #git Le HEAD est une simple référence vers une branche.

Slide 31

Slide 31 text

@slecache #codeurs2023 #git 59d0 df85 main draft HEAD b5e5 main HEAD Nouveau commit ⌨

Slide 32

Slide 32 text

@slecache #codeurs2023 #git MAIN 59d0 df85 draft b5e5 main HEAD HEAD Changer de branche (switch) ⌨

Slide 33

Slide 33 text

@slecache #codeurs2023 #git 59d0 df85 draft b5e5 main HEAD 20d4 draft HEAD Branching ⌨

Slide 34

Slide 34 text

@slecache #codeurs2023 #git 59d0 df85 b5e5 main 20d4 draft HEAD HEAD 0593 main HEAD Merging ⌨

Slide 35

Slide 35 text

@slecache #codeurs2023 #git Workspace - Historique vs Contenu

Slide 36

Slide 36 text

@slecache #codeurs2023 #git Workspace - Historique vs Contenu

Slide 37

Slide 37 text

@slecache #codeurs2023 #git Workspace - Historique vs Contenu

Slide 38

Slide 38 text

@slecache #codeurs2023 #git Workspace - Historique vs Contenu (merge)

Slide 39

Slide 39 text

@slecache #codeurs2023 #git Se concentrer sur l’historique des commits et laisser git gérer le contenu.

Slide 40

Slide 40 text

@slecache #codeurs2023 #git git se moque de votre répertoire de travail.

Slide 41

Slide 41 text

@slecache #codeurs2023 #git 59d0 df85 b5e5 20d4 draft HEAD 0593 main HEAD draft HEAD Un merge spécial ⌨

Slide 42

Slide 42 text

@slecache #codeurs2023 #git 0593 be09 main HEAD c663 HEAD HEAD bad HEAD Perdre la tête ⌨

Slide 43

Slide 43 text

@slecache #codeurs2023 #git Mettre une branche sur le travail à conserver.

Slide 44

Slide 44 text

@slecache #codeurs2023 #git Workspace - Modèle objet (étendu) branch-2 branch-1 HEAD

Slide 45

Slide 45 text

@slecache #codeurs2023 #git Les 3 règles ✔ La branche courante suit les nouveaux commits. ✔ Quand on se déplace vers un commit, git met à jour le répertoire de travail. ✔ Les objets inaccessibles passent au ramasse-miettes.

Slide 46

Slide 46 text

@slecache #codeurs2023 #git main web web Rebase

Slide 47

Slide 47 text

@slecache #codeurs2023 #git main main Rebase (fast-forward) web

Slide 48

Slide 48 text

@slecache #codeurs2023 #git main ! ! Rebase (pour de vrai) web web

Slide 49

Slide 49 text

@slecache #codeurs2023 #git Merge vs rebase

Slide 50

Slide 50 text

@slecache #codeurs2023 #git Dans le doute, faites un merge.

Slide 51

Slide 51 text

@slecache #codeurs2023 #git main v1 main wip Lightweight vs annotated tags ⌨

Slide 52

Slide 52 text

@slecache #codeurs2023 #git Un tag est une branche qui ne bouge pas avec les nouveaux commits.

Slide 53

Slide 53 text

@slecache #codeurs2023 #git git est un… Revision Control System

Slide 54

Slide 54 text

@slecache #codeurs2023 #git git est un… Distributed Revision Control System

Slide 55

Slide 55 text

@slecache #codeurs2023 #git Plusieurs dépôts

Slide 56

Slide 56 text

@slecache #codeurs2023 #git Dépôt distant ⌨

Slide 57

Slide 57 text

@slecache #codeurs2023 #git git push

Slide 58

Slide 58 text

@slecache #codeurs2023 #git git pull

Slide 59

Slide 59 text

@slecache #codeurs2023 #git origin/main main LOCAL REMOTE main Pulling

Slide 60

Slide 60 text

@slecache #codeurs2023 #git origin/main main LOCAL REMOTE main origin/main git push /-force

Slide 61

Slide 61 text

@slecache #codeurs2023 #git origin/main main LOCAL REMOTE main conflit ! Pendant ce temps… (chez Bob)

Slide 62

Slide 62 text

@slecache #codeurs2023 #git origin/main main LOCAL REMOTE main git fetch

Slide 63

Slide 63 text

@slecache #codeurs2023 #git origin/main main LOCAL REMOTE main git fetch

Slide 64

Slide 64 text

@slecache #codeurs2023 #git main LOCAL REMOTE main origin/main git merge

Slide 65

Slide 65 text

@slecache #codeurs2023 #git main LOCAL REMOTE origin/main main git push

Slide 66

Slide 66 text

@slecache #codeurs2023 #git Faire un fetch, merge puis push. C'est-à-dire, pull puis push.

Slide 67

Slide 67 text

@slecache #codeurs2023 #git draft LOCAL REMOTE main draft main git rebase

Slide 68

Slide 68 text

@slecache #codeurs2023 #git LOCAL REMOTE main draft main ! draft conflit ! git rebase main

Slide 69

Slide 69 text

@slecache #codeurs2023 #git LOCAL REMOTE main draft main ! draft git fetch

Slide 70

Slide 70 text

@slecache #codeurs2023 #git LOCAL REMOTE main draft main ! draft git merge

Slide 71

Slide 71 text

@slecache #codeurs2023 #git Ne jamais rebaser des commits partagés.

Slide 72

Slide 72 text

@slecache #codeurs2023 #git git est un… Persistent Map

Slide 73

Slide 73 text

@slecache #codeurs2023 #git git est un… Simple Stupid Content Tracker

Slide 74

Slide 74 text

@slecache #codeurs2023 #git git est un… Revision Control System

Slide 75

Slide 75 text

@slecache #codeurs2023 #git git est un… Distributed Revision Control System

Slide 76

Slide 76 text

@slecache #codeurs2023 #git commit 5ba4fbb (HEAD /> Codeurs en Seine 2023) Author: Sébastien Lecacheur <@slecache> Org: Odigo Date: Thu OCT 26 10:45:00 2023 +0000 Merci !

Slide 77

Slide 77 text

@slecache #codeurs2023 #git commit 5ba4fbb (HEAD /> Codeurs en Seine 2023) Author: Sébastien Lecacheur <@slecache> Org: Odigo Date: Thu OCT 26 10:50:00 2023 +0000 Questions & réponses

Slide 78

Slide 78 text

@slecache #codeurs2023 #git Ressources ● JetBrains Mono Font ● https://www.clipartmax.com/middle/m2i8H7i8N4G6b1m2_open-onio n-svg/