Par Valentin Brosseau / @c4software
Un logiciel de gestion de versions ou VCS (Version Control System) est un logiciel qui permet de stocker un ensemble de fichiers en conservant la chronologie de toutes les modifications effectuées.
Un gestionnaire de versions agit sur une arborescence de fichiers afin de conserver l’historique complet des versions.
Git est développé par Linus Torvalds (créateur du noyau Linux) depuis 2005.
C’est un SCM (Source Code Management), un gestionnaire de versions comparable à CVS ou SVN, à la différence près qu’il est décentralisé.
Les dépôts Git d’un projet sont donc distribués : aucun dépôt n’est intrinsèquement prioritaire sur les autres.


index1, index2, …


Vos sources + un dossier caché nommé .git.
Le dossier .git contient l’historique complet du projet (et bien plus).
Différence entre deux versions d’un fichier.
Action d'enregistrer les modifications d'un ou des fichiers. Création d'une version.
Action d’enregistrer un ensemble de modifications.
Un commit est identifié par un hash cryptographique unique (SHA-1 ou SHA-256).
Une lignée de développement indépendante.
Par défaut, le développement se fait sur la branche main.
Identifiant symbolique associé à un commit.
Une étiquette pointant vers une version précise




Nombre de commits par semaine chez Facebook :
(Enfin presque… mais extrêmement puissant)

git config --global user.name "Valentin Brosseau"
git config --global user.email "c4software@gmail.com"cd mon_projet
git initCréation d’un nouveau dépôt Git vide.
vim mon_fichier.js
git add mon_fichier.jsgit commit -m "Mon premier commit"
[main 745a6ef] Mon premier commit
1 file changed, 1 insertion(+)
create mode 100644 mon_fichier.js

git commit -m "feat: ajout de la fonctionnalité de connexion"
git commit -m "fix: correction du bug de connexion"
git commit -m "docs: ajout de la documentation"git add fichier1.js fichier2.js
git commit -m "Deuxième commit"[main aa2507d] Deuxième commit
2 files changed, 2 insertions(+), 0 deletions(-)
create mode 100644 fichier1.js
create mode 100644 fichier2.js
vim fichier.js
git commit -am "Modification du fichier"[main 841036d] Modification du fichier
1 files changed, 28 insertions(+), 0 deletions(-)
git statusgit difftool
git tag v1.0.0Il faut exclure :
.gitignorelib.so
conf/
*.yml
*.pyc
git branch evolution1
git switch evolution1
vim fichier2.js
git commit -am "Ajout de l’évolution"[evolution1 54d9dde] Ajout de l’évolution
1 files changed, 208 insertions(+), 10 deletions(-)
git switch main
git merge evolution1git branch -d evolution1git log)git stash
git status
git add monFichier
git restore --staged monFichier
file://https://ssh://rsync://