Les bases du versionning avec git
par François LASSERRE
Les bases du versionning avec git
- Qu'est-ce que la gestion de version ?
- L'histoire de git
- Configuration de git
- Les bases de git
- Créer des dossiers avec git
- Ignorer des fichiers avec git
- La gestion des branches avec git
- Liens utiles
Qu'est-ce que la gestion de version ?
Version Control System
- Enregistre l'évolution de fichiers dans le temps
- Permet le retour à un état enregistré
- Outil collaboratif
Le dépôt
Repository
- Espace de stockage
- Organisé
- Enregistre des versions
Les systèmes de gestion de versions centralisés (CVCS)
Systèmes Centralisés : CVS, Subversion
- Un seul dépôt
- Sans connexion au réseau pas de modifications
- Pas sécurisé (en cas de défaillance système)
Les systèmes de gestion de version distribués (DVCS)
Systèmes distribués : git, Mercurial, Bazaar
- Pas dépendant d'une seule machine en cas de défaillance
- Travail hors ligne
- Opérations rapides car en local
- Clonage long car on récupère tout l'historique et pas qu'une version
L'histoire de git
- git est né avec une dose de destruction créative et de controverse houleuse.
- Le noyau Linux est un projet libre de grande envergure. Entre 1991 et 2002, les modifications étaient transmises sous forme de patchs et d’archives de fichiers.
- En 2002, le projet du noyau Linux commença à utiliser un DVCS propriétaire appelé BitKeeper.
- En janvier 2005, Bitkeeper annonce la fin de gratuité de l’outil à partir de juillet 2005.
- Linus Torvald décide donc de créer son propre outil et publie une première version de git le 8 avril 2005.
git ?
"git" can mean anything, depending on your mood.
Pour en savoir plus voir le premier commit de git sur github :
https://github.com/git/git/tree/e83c5163316f89bfbde7d9ab23ca2e25604af290
Configuration de git
git Config
- Fichier .gitconfig
- Données personnelles (nom, e-mail, clé gpg)
- Préférences (éditeur texte, outil de différences)
- Alias
- Couleurs
- etc…
Création d'un fichier .gitconfig
$ git config --global user.name "François LASSERRE"
$ cat ~/.gitconfig
[user]
name = François LASSERRE
$ git config --global user.email "contact@francoislasserre.fr"
$ cat ~/.gitconfig
[user]
name = François LASSERRE
email = contact@francoislasserre.fr
Configuration de l'éditeur de texte
$ git config --global core.editor vim
$ cat ~/.gitconfig
[user]
name = François LASSERRE
email = contact@francoislasserre.fr
[core]
editor = vim
Création d'alias de commandes
$ git config --global alias.br branch
$ cat ~/.gitconfig
[user]
name = François LASSERRE
email = contact@francoislasserre.fr
[core]
editor = vim
[alias]
br = branch
co = checkout
$ git config --global alias.co checkout
Les bases de git
États d'un fichier
indexé
modifié
non modifié
non indexé
Ajout du fichier dans le dépôt
Ajout d'un fichier
$ git add README.md
$ git status
Sur la branche master
Modifications qui seront validées :
(utilisez "git reset HEAD <fichier>..." pour désindexer)
nouveau fichier : README.md
États d'un fichier
indexé
modifié
non modifié
non indexé
Ajout du fichier dans le dépôt
Commit du fichier
Commit d'un fichier
Add file README.md
# 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
# Modifications qui seront validées :
# nouveau fichier : README.md
#
$ git commit
$ git commit
[master 0d147cb] Add file README.md
1 file changed, 2 insertions(+)
create mode 100644 README.md
États d'un fichier
indexé
modifié
non modifié
non indexé
Édition du fichier
Commit du fichier
Édition d'un fichier
$ git status
Sur la branche master
Modifications qui ne seront pas validées :
(utilisez "git add <fichier>..." pour mettre à jour
ce qui sera validé)
(utilisez "git checkout -- <fichier>..." pour annuler
les modifications dans la copie de travail)
modifié : README.md
aucune modification n'a été ajoutée à la validation
(utilisez "git add" ou "git commit -a")
$ echo "test" >> README.md
États d'un fichier
indexé
modifié
non modifié
non indexé
Édition du fichier
Index du fichier
Indexer le fichier
$ git status
Sur la branche master
Modifications qui seront validées :
(utilisez "git reset HEAD <fichier>..." pour désindexer)
modifié : README.md
$ git add README.md
Commit du fichier
$ git commit
Add text "test"
# 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
# Modifications qui seront validées :
# nouveau fichier : README.md
#
$ git commit
[master d8dcbdd] Add text "test"
1 file changed, 1 insertion(+)
Historique
$ git log
commit d8dcbdd1641a460aab46809bf1546606c1ab4cb3
Author: François LASSERRE <contact@francoislasserre.fr>
Date: Mon Jul 25 22:30:28 2016 +0200
Add text "test"
commit 0d147cb2c53931dd95e248eb84fa130fc609714f
Author: François LASSERRE <contact@francoislasserre.fr>
Date: Mon Jul 25 22:29:17 2016 +0200
Add file README.md
Créer des dossiers avec git
Créer des dossiers avec .gitkeep
$ ls -ap
./ ../ .git/ README.md
$ git status
Sur la branche master
rien à valider, la copie de travail est propre
$ mkdir logs
Créer des dossiers avec .gitkeep
$ touch logs/.gitkeep
$ git status
Sur la branche master
Fichiers non suivis:
(utilisez "git add <fichier>..." pour inclure dans ce qui sera validé)
logs/
aucune modification ajoutée à la validation mais des fichiers non suivis
sont présents (utilisez "git add" pour les suivre)
$ git add logs/
Créer des dossiers avec .gitkeep
$ git status
Sur la branche master
Modifications qui seront validées :
(utilisez "git reset HEAD <fichier>..." pour désindexer)
nouveau fichier : logs/.gitkeep
$ git commit -m "Add .gitkeep file"
[master 003963f] Add .gitkeep file
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 logs/.gitkeep
Ignorer des fichiers avec git
Ignorer des fichiers
$ touch logs/access.log
$ git status
Sur la branche master
Fichiers non suivis:
(utilisez "git add <fichier>..." pour inclure dans ce qui sera validé)
logs/access.log
aucune modification ajoutée à la validation mais des fichiers non suivis
sont présents (utilisez "git add" pour les suivre)
$ echo "logs/*.log" > .gitignore
$ git add .gitignore
$ git commit -m "add .gitignore file"
$ git status
Sur la branche master
rien à valider, la copie de travail est propre
Ignorer des dossiers
$ mkdir logs/2016/
$ git status
Sur la branche master
Fichiers non suivis:
(utilisez "git add <fichier>..." pour inclure dans ce qui sera validé)
logs/2016/access.log
aucune modification ajoutée à la validation mais des fichiers non suivis
sont présents (utilisez "git add" pour les suivre)
$ echo "logs/*" >> .gitignore
$ git status
Sur la branche master
rien à valider, la copie de travail est propre
$ touch logs/2016/access.log
La gestion des branches avec git
Création d'une branche
$ git branch mybranch
$ git branch
* master
mybranch
$ git checkout mybranch
Basculement sur la branche 'mybranch'
$ git branch
master
* mybranch
$ git checkout -b mybranch
Basculement sur la nouvelle branche 'mybranch'
Alternative
Faire un commit sur la branche
$ touch mybranch.txt
$ git add mybranch.txt
$ git commit -m "add mybranch.txt"
$ git log --decorate
commit 5dba86943e91c369a6e2665e870d82e1b448cca2 (HEAD -> mybranch)
Author: François LASSERRE <contact@francoislasserre.fr>
Date: Tue Jul 26 06:51:26 2016 +0200
add mybranch.txt
commit 003963fe03e9755bafe58897b0bc3f4e4703f4fa (master)
Author: François LASSERRE <contact@francoislasserre.fr>
Date: Tue Jul 26 06:48:22 2016 +0200
Add .gitkeep
Mettre à jour la branche
$ git checkout master
$ git log --decorate
commit 003963fe03e9755bafe58897b0bc3f4e4703f4fa (master)
Author: François LASSERRE <contact@francoislasserre.fr>
Date: Tue Jul 26 06:48:22 2016 +0200
Add .gitkeep
$ git merge mybranch
Mise à jour 003963f..5dba869
Fast-forward
mybranch | 0
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 mybranch.txt
Vérification avec l'historique
$ git log --decorate
commit 5dba86943e91c369a6e2665e870d82e1b448cca2 (HEAD -> master, mybranch)
Author: François LASSERRE <contact@francoislasserre.fr>
Date: Tue Jul 26 06:51:26 2016 +0200
add mybranch.txt
commit 003963fe03e9755bafe58897b0bc3f4e4703f4fa (master)
Author: François LASSERRE <contact@francoislasserre.fr>
Date: Tue Jul 26 06:48:22 2016 +0200
Add .gitkeep
Idées de présentations git
- Création d'un dépôt local + github
(git init, git clone, git remote add…)
- Utilisation des remotes
(git fetch, git pull, git push…)
- Voir les différences, auteurs, branches via les logs
(git diff, git blame, git log --graph…)
Les bases du versionning avec git
By choiz
Les bases du versionning avec git
Les bases du versionning avec git par François LASSERRE
- 1,938