![]() |
Licence Creative Commons by-nc-nd
(Paternité, pas d'utilisation commerciale, pas de modification) |
Cette fiche a été rédigée initialement par Frédéric Camps. Elle est reprise avec son accord par Matthieu Herrb.
git est un logiciel de gestion de versions décentralisé. Son rôle principal est d'assurer le suivi des modifications dans un ensemble de fichiers. Il repose sur un système d'archivage de fichiers adressable par le contenu via l'utilisation de fonctions de hachage cryptographiques (SHA-1) pour indexer les fichiers.
git est principalement utile avec des fichiers au format texte (code source, fichiers de configuration,...) mais il peut aussi gérer des documents binaires de manière efficace.
Comme tout logiciel de gestion de version, il permet d'enregistrer les modifications successives de l'ensemble des fichiers, de visualiser l'historique des modifications, de gérer des branches de modifications parallèles.
Son aspect distribué rend cette dernière fonctionnalité particulièrement puissante. Chaque utilisateur
disposant d'une copie locale de l'historique du projet, il est possible de travailler hors-ligne, les outils de fusion des branches permettant ensuite de résoudre les éventuels conflits.
Enfin git permet de gérer de nombreux types de flux de travail, que ce soit pour un utilisateur isolé, des petits groupes de travail informel ou des gros projets nécessitant le respect de règles précises.
git est multi-plateformes (Unix (Linux, BSD, Solaris,...), Mac OS X, Windows). En plus de ses fonctions d'import/export vers d'autres systèmes de gestion de versions, il existe des plugins pour l'insérer dans de nombreux environnements de développement tels que Eclipse (egit), kdevelop, ou Xcode (voir liens dans logiciels connexes).
git-svn permet l'interopérabilité bi-directionnelle avec subversion.
L'outil Tortoise git permet une intégration avec l'explorateur de fichiers de Microsoft Windows.
De nombreux logiciels développés au laboratoire sont gérés sous git. Le service informatique propose un serveur d'hébergement git couplé au logiciel de forge Trac pour héberger les développements de chercheurs. En particulier les équipes du pôle robotique maintiennent l'ensemble de leurs développements mis à disposition sous licences libres sur ce serveur.
La principale difficulté de git est sa richesse fonctionnelle. Bien que les concepts et les commandes de base soient très faciles à comprendre, il y a derrière une richesse et une complexité qui peuvent dérouter certains utilisateurs.
git permettant une grande liberté dans le type d'organisation du développement, il faut se donner des moyens organisationnels pour gérer et canaliser le développement de projets de grande taille.
Il est aisé d'utiliser git sous toutes les distributions de Linux (un seul package à installer), tous les systèmes BSD et probablement tout système Unix disposant des outils de ligne commande GNU (bash, grep, ...). Disponible sur Windows (version native msysgit et Tortoise Git) et MacOS X.
Linux, *BSD, Solaris, MacOSX, Microsoft Windows
-Forges logicielles autour de git :
Ces forges offrent des possibilités intéressantes de travail collaboratif via le coté distribué de git. En plus dans une forge git, si la forge ferme, on ne perd pas le dépôt, et il est possible de le migrer d'une forge à l'autre en cas de besoin.
-Interfaces web :
(en plus de gitweb, intégré à la distribution de git :
-Visualisation de l'historique :
-Plugin pour IDEs :
-git pour MS Windows :
-Serveur git multi-utilisateurs :
gitolite permet d'héberger des projets git sur un serveur avec une gestion des utilisateurs via des clés publiques SSH
git a été créé par et pour les développeurs du noyau Linux.
Il a été écrit à l'origine par Linus Torvalds et est actuellement maintenu par C Junio Hamano.
Documentation utilisateur en anglais :
Documentation en français :
Pour la résolution des conflits lors de la fusion de branche, git peut utiliser des logiciels externes tels que meld ou kdiff3 pour proposer une interface plus conviviale que l'édition d'un fichier avec des marqueurs de conflits.
Les contributions se font via la communauté des contributeurs de git.