Introduction
Git est un système de contrôle de version distribué créé à l'origine par Linus Torvalds en 2005 pour le développement du noyau Linux. Il suit l'évolution des fichiers dans le temps, permet à plusieurs personnes de collaborer et donne à chaque développeur une copie complète de l'historique du projet. Aujourd'hui, Git propulse la majorité du développement logiciel open source et en entreprise.
Ce qu'est Git
Git est un système de capture instantanée adressé par contenu. Chaque commit stocke une image complète des fichiers suivis de votre projet, identifiée par un hachage cryptographique. Git est rapide parce que la plupart des opérations sont locales, et résilient parce que chaque clone est une sauvegarde complète.
- Distribué : chaque clone est un dépôt complet.
- Basé sur des instantanés : les commits stockent des arbres, pas des diffs.
- Favorable au branching : les branches sont des pointeurs légers, pas des copies complètes.
Ce que Git n'est pas
Git n'est pas un outil de sauvegarde, ni un système de revue de code, ni une plateforme de déploiement. Il ne verrouille pas les fichiers comme les systèmes centralisés (CVS, SVN, Perforce en mode par défaut). Il ne stocke pas efficacement les diffs binaires pour les gros fichiers multimédias sans extensions comme Git LFS. Et Git n'est pas GitHub : GitHub, GitLab et Bitbucket sont des services d'hébergement construits au-dessus de Git.
Essayez par vous-même
Vérifiez que Git est installé et inspectez sa version :
git --version
Initialisez un petit dépôt pour voir Git en action :
mkdir hello-git
cd hello-git
git init
echo "hello" > readme.txt
git add readme.txt
git commit -m "first commit"
git log --oneline
Pourquoi Git a triomphé
Avant Git, la plupart des équipes utilisaient des outils centralisés qui exigeaient un accès réseau pour presque chaque action. Le modèle distribué de Git permet aux développeurs de commiter, créer des branches et consulter l'historique hors ligne. Combiné à un branching peu coûteux et à l'adoption par le noyau Linux, Git est devenu le standard de fait en moins d'une décennie. La large disponibilité d'hébergements gratuits sur des plateformes comme GitHub, GitLab et Bitbucket a cimenté la place de Git : une génération de développeurs a appris Git comme premier système de contrôle de version.
Comment Git stocke les données
Le modèle de stockage de Git est inhabituel. Au lieu d'enregistrer des diffs entre versions, Git stocke des instantanés complets de chaque fichier dans chaque commit, dédupliqués par hachage de contenu. Cela rend des opérations comme le checkout et le changement de branche essentiellement à temps constant, et rend les opérations sur l'historique comme log et blame étonnamment rapides. Le compromis est que des changements binaires aléatoires peuvent faire exploser le stockage, ce qui explique l'existence de Git LFS pour les gros assets.
Erreurs fréquentes
Les débutants confondent souvent Git avec GitHub, ou supposent que Git suit automatiquement chaque fichier dans un dossier. Git ne suit que les fichiers que vous ajoutez explicitement avec git add, et ne versionne que le contenu sous le répertoire de travail d'un dépôt initialisé. Autre mythe : Git « sauvegarde » en continu. C'est faux. Rien n'est enregistré tant que vous n'exécutez pas git commit. Enfin, Git n'est pas conçu pour les gros assets binaires ; utilisez Git LFS ou un autre système pour la vidéo, les gros jeux de données ou les artefacts de build.