formation à git ! ne couvre qu'une infime partie des usages de l'outil est chiante à mourir car il y a beaucoup de concepts à appréhender risque de décevoir les gens qui veulent de l'opérationnel rapide 8 / 235
formation à git ! ne couvre qu'une infime partie des usages de l'outil est chiante à mourir car il y a beaucoup de concepts à appréhender risque de décevoir les gens qui veulent de l'opérationnel rapide http://git-scm.com/book/fr/v2 pour la référence 9 / 235
permet de n'utiliser que la partie suffisante des SHA-1 $ git cat-file -p 1b7c47f647a48cf4aa80def219d62110aaff6364 titi toto tutu $ git cat-file -p 1b7c47f titi toto tutu $ git cat-file -p 1b7c titi toto tutu 26 / 235
Validation initiale Modifications qui seront validées : (utilisez "git rm --cached <fichier>..." pour désindexer) nouveau fichier : otherfile Fichiers non suivis: (utilisez "git add <fichier>..." pour inclure dans ce qui sera validé) file.txt Ajout à l'index -> enregistré dans la base git. 55 / 235
.git/objects/f6/64ea455b2551122b8f703010d04d71ad4feac2 .git/objects/28/d0af969b32e69a389087d7a267a2ecc05f1350 *.git/objects/e8/b7c915cf81135b25e2662a72356339ae5cb774 --> non utilisé ! .git/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 .git/objects/ac/9486aa02cdd63b67d5b0c0ab863f0b77f *$ git cat-file -p e8b7 coucou On ne perd jamais rien dans git ! (enfin, presque...) allez dire ça au garbage collector... 64 / 235
Bob Maerten <[email protected]> Date: Tue Feb 24 08:26:16 2015 +0100 Removed SSH host key generation on image Prevents using hub version of SSH keys to intercept communication with the docker container. Thx @gabeos on this one! Fixes #6 commit c5cf179 Author: Bob Maerten <[email protected]> Date: Tue Feb 24 08:25:48 2015 +0100 Bumped to latest phusion/baseimage commit 379ff91 66 / 235
le contenu du noeud Y Appliquer une opération (X & Y) Exemple Se placer sur le noeud 4 Récupérer le contenu du noeud 5 Appliquer une opération : 4 & 5 = 6 (ici merge) 85 / 235
google.com google.com has IPv6 address 2a00:1450:4007:805::1006 Une référence pointe sur un commit $ cat .git/refs/master a9b573777c6847cf5144e598aef899b2360c5ed6 117 / 235
enfants Par extention on parle de branche pour l'ensemble des commits parents Ne "coûte" absolument rien en CPU et en stockage $ git branch newbranch 0,00s user 0,01s system 89% cpu 0,007 total $ ls -l .git/refs/heads/newbranch -rw-rw-r-- 1 rmaerten rmaerten 41 mars 4 13:37 .git/refs/heads/newbranch 128 / 235
annoncer que des modifications sont disponibles Votre dépôt est personnel personnel on pull depuis les autres on ne ne push pas pas vers les autres 148 / 235
clone /tmp/sharedrepo.git On s'accorde collectivement sur le fait que ce dépôt devient un référentiel les usagers pushent et pullent sur le référentiel 153 / 235
clone /tmp/sharedrepo.git On s'accorde collectivement sur le fait que ce dépôt devient un référentiel les usagers pushent et pullent sur le référentiel nécessité de synchroniser régulièrement 154 / 235
clone /tmp/sharedrepo.git On s'accorde collectivement sur le fait que ce dépôt devient un référentiel les usagers pushent et pullent sur le référentiel nécessité de synchroniser régulièrement avec un prompt aware c'est mieux 155 / 235
de working dir bare : .git à la fin (convention) Gitlab est un dépôt bare (avec des ACLs) $ git clone [email protected]:rmaerten/presentation-git.git Clonage dans 'presentation-git'... remote: Counting objects: 107, done. remote: Compressing objects: 100% (105/105), done. remote: Total 107 (delta 26), reused 0 (delta 0) Réception d'objets: 100% (107/107), 6.72 MiB | 540.00 KiB/s, fait. 160 / 235
doit plus être modifié localement exception permise pour les branches identifiées comme purement personnelles personnelles (git push --force) 195 / 235
doit plus être modifié localement exception permise pour les branches identifiées comme purement personnelles personnelles (git push --force) Allégorie de git push --force 196 / 235
file.txt $ git commit Sujet du commit Que s'est-il passé ? Le pourquoi du commit, son contexte. Parce que le comment, c'est ce qu'il y a dans le code... [Ticket en rapport] # Veuillez saisir le message de validation pour vos modifications. # Les lignes commençant par '#' seront ignorées, et un message vide # abandonne la validation. # Sur la branche master # # Validation initiale # # Modifications qui seront validées : # nouveau fichier: plop # 204 / 235
file.txt $ git commit *Sujet du commit Que s'est-il passé ? Le pourquoi du commit, son contexte. Parce que le comment, c'est ce qu'il y a dans le code... [Ticket en rapport] # Veuillez saisir le message de validation pour vos modifications. # Les lignes commençant par '#' seront ignorées, et un message vide # abandonne la validation. # Sur la branche master # # Validation initiale # # Modifications qui seront validées : # nouveau fichier: plop # 205 / 235
file.txt $ git commit Sujet du commit *Que s'est-il passé ? *Le pourquoi du commit, son contexte. *Parce que le comment, c'est ce qu'il y a dans le code... [Ticket en rapport] # Veuillez saisir le message de validation pour vos modifications. # Les lignes commençant par '#' seront ignorées, et un message vide # abandonne la validation. # Sur la branche master # # Validation initiale # # Modifications qui seront validées : # nouveau fichier: plop # 206 / 235
file.txt $ git commit Sujet du commit Que s'est-il passé ? Le pourquoi du commit, son contexte. Parce que le comment, c'est ce qu'il y a dans le code... *[Ticket en rapport] # Veuillez saisir le message de validation pour vos modifications. # Les lignes commençant par '#' seront ignorées, et un message vide # abandonne la validation. # Sur la branche master # # Validation initiale # # Modifications qui seront validées : # nouveau fichier: plop # 207 / 235
versionner ou sensibles (mots de passe) local au dépôt et partageable (on peut le versionner) $ git config --global core.excludesfile ~/.gitignore_global *$ cat ~/.gitignore_global **~ **.bak *.DS_Store 211 / 235
versionner ou sensibles (mots de passe) local au dépôt et partageable (on peut le versionner) $ git config --global core.excludesfile ~/.gitignore_global *$ cat ~/.gitignore_global **~ **.bak *.DS_Store .git/info/exclude 212 / 235
versionner ou sensibles (mots de passe) local au dépôt et partageable (on peut le versionner) $ git config --global core.excludesfile ~/.gitignore_global *$ cat ~/.gitignore_global **~ **.bak *.DS_Store .git/info/exclude Ignorer des fichiers du dépôt 213 / 235
versionner ou sensibles (mots de passe) local au dépôt et partageable (on peut le versionner) $ git config --global core.excludesfile ~/.gitignore_global *$ cat ~/.gitignore_global **~ **.bak *.DS_Store .git/info/exclude Ignorer des fichiers du dépôt Purement local au dépôt (non partagé, non versionnable) 214 / 235
lignes en fonction de la valeur true true = CRLF <-> LF entre le WT et l'index pour les windowsiens responsables input input = CRLF -> LF vers le WT mais pas l'inverse 219 / 235
lignes en fonction de la valeur true true = CRLF <-> LF entre le WT et l'index pour les windowsiens responsables input input = CRLF -> LF vers le WT mais pas l'inverse pour les Macqueux/Linuxiens qui bossent avec des Windowsiens pas responsables 220 / 235
lignes en fonction de la valeur true true = CRLF <-> LF entre le WT et l'index pour les windowsiens responsables input input = CRLF -> LF vers le WT mais pas l'inverse pour les Macqueux/Linuxiens qui bossent avec des Windowsiens pas responsables false false si environnement windows exclusif rarement le cas 221 / 235
les problèmes éventuels d'espaces blancs Par défaut blank-at-eol blank-at-eof trailing-space regroupe les 2 précédents space-before-tab Off indent-with-non-tab : cherche les lignes qui commencent par des espaces tabwidth=8 par défaut dans ce cas tab-in-indent : vérfie l'indentation avec des Tabs cr-at-eol : git ne corrigera pas les CR en fin de ligne 225 / 235
les problèmes éventuels d'espaces blancs Par défaut blank-at-eol blank-at-eof trailing-space regroupe les 2 précédents space-before-tab Off indent-with-non-tab : cherche les lignes qui commencent par des espaces tabwidth=8 par défaut dans ce cas tab-in-indent : vérfie l'indentation avec des Tabs cr-at-eol : git ne corrigera pas les CR en fin de ligne $ git config --global core.whitespace \ trailing-space,space-before-tab,indent-with-non-tab 226 / 235
les problèmes éventuels d'espaces blancs Par défaut blank-at-eol blank-at-eof trailing-space regroupe les 2 précédents space-before-tab Off indent-with-non-tab : cherche les lignes qui commencent par des espaces tabwidth=8 par défaut dans ce cas tab-in-indent : vérfie l'indentation avec des Tabs cr-at-eol : git ne corrigera pas les CR en fin de ligne $ git config --global core.whitespace \ trailing-space,space-before-tab,indent-with-non-tab man git-config est ton ami 227 / 235