Qu’est-ce que Git ?
I. Git : un système de gestion de version
Git est un système de gestion de version (version control system, VCS) qui a été introduit en 2005 par Linus Torvalds dans le cadre du projet de développement du noyau Linux qu'il avait lui-même créé en 1991. À partir de 2002, le code source du noyau Linux était hébergé gratuitement sur la plateforme Bitkeeper sous une licence « community ». Cependant, le fait d'avoir recours à un gestionnaire de version propriétaire était controversé au sein de la communauté Linux, car plusieurs contributeurs estimaient que ce choix n'était pas conforme aux valeurs du logiciel libre qui donne le droit à quiconque de modifier, adapter, dupliquer et redistribuer le code source librement.
Un système de gestion de version (version control system, VCS) est un outil qui permet de suivre et d'enregistrer l'évolution d'un ou plusieurs fichier(s) dans le temps tout en donnant la possibilité de restaurer une version antérieure ou de consulter l'historique des modifications. Pour le dire de façon imagée, un gestionnaire de version est, en quelque sorte, une machine à voyager dans le temps : on peut facilement retourner à une date du passé et revenir au présent par la suite.
II. La naissance de Git
En 2005, BitMover, la compagnie qui offrait la solution Bitkeeper, décide de mettre fin à la version gratuite du produit. Ce fut l'occasion pour Linus Torvalds de développer un nouvel outil qui, par le fait même, pourrait mieux répondre aux besoins d'un projet d'envergure comme celui du noyau Linux. Il était donc essentiel que la conception d'un nouveau système de gestion de version, en l'occurrence Git, puisse remédier à certains inconvénients de son prédécesseur en tenant compte des points suivants :
- Le mode de licence : Git doit être gratuit et open source afin de pouvoir être distribué librement.
- Le modèle centralisé : Git ne doit plus dépendre d'un serveur centralisé qui contraint les développeurs à interagir constamment avec un dépôt distant.
- La performance : Git doit pouvoir prendre en charge des dépôts de code source volumineux dans le cadre de projets collaboratifs qui comprennent plusieurs développeurs sans que la performance n'en soit affectée.
Dans les pages du manuel Linux, Git est présenté comme « un stupide gestionnaire de contenu » (« git – the stupid content tracker ») et la section « description » le définit comme un « système distribué de contrôle de révisions » (« distributed revision control system »).
Cette définition en apparence complexe est assez simple à comprendre lorsqu’elle est replacée dans son contexte. D'abord, Git est un gestionnaire de contenu, ce qui signifie qu'il n'est pas exclusivement dédié au suivi de code source. En effet, l'outil permet aussi de gérer tout type de projet individuel ou collaboratif (documentation, fichiers de présentation, rédaction d'articles ou de livres, etc.) pour lequel il est pertinent de conserver des versions dans le temps.