Loading AI tools
logiciel libre de gestion de version décentralisé De Wikipédia, l'encyclopédie libre
Git est un logiciel de gestion de versions décentralisé. C'est un logiciel libre et gratuit, créé en 2005 par Linus Torvalds, auteur du noyau Linux, et distribué selon les termes de la licence publique générale GNU version 2. Le principal contributeur actuel de Git, et ce depuis plus de 16 ans, est Junio C Hamano.
Créateur | Linus Torvalds |
---|---|
Développé par | Software Freedom Conservancy (en) |
Première version | [1] |
Dernière version | 2.47.0 ()[2] |
Dépôt | git.kernel.org/pub/scm/git/git.git |
Assurance qualité | Intégration continue et intégration continue |
Écrit en | C, Perl, Tcl, Python et C++ |
Système d'exploitation | Multiplateforme |
Formats lus | Git packfile (d), git packfile index, version 1 (d) et git packfile index, version 2 (d) |
Formats écrits | Git packfile (d), git packfile index, version 1 (d) et git packfile index, version 2 (d) |
Langues | Anglais, bulgare, catalan, français, indonésien, suédois, turc, ukrainien, vietnamien, chinois simplifié et mandarin de Taïwan (d) |
Type |
Gestionnaire de code source décentralisé (en) Outil de science ouverte (d) Outil de programmation (en) Filestore (d) |
Licence | Licence publique générale GNU version 2 |
Site web | git-scm.com |
Depuis les années 2010, il s’agit du logiciel de gestion de versions le plus populaire dans le développement logiciel et web, qui est utilisé par des dizaines de millions de personnes, sur tous les environnements (Windows, Mac, Linux)[3]. Git est aussi le système à la base du célèbre site web GitHub, le plus important hébergeur de code informatique.
Linus Torvalds prononce [ˈɡɪt] avec un ɡ dur[4].
« git » peut se traduire par « connard » en argot britannique[5] ou désigne, d'après Merriam-Webster, une personne inconséquente ou sans valeur. Linus Torvalds explique à ce sujet « je ne suis qu'un sale égocentrique, donc j'appelle tous mes projets d'après ma propre personne. D'abord Linux, puis Git »[6].
Git est similaire à BitKeeper en cela qu'il ne repose pas sur un serveur centralisé, mais utilise un système de connexion pair à pair. Le code informatique développé est stocké non seulement sur l’ordinateur de chaque contributeur du projet, mais il peut également l'être sur un serveur dédié. C'est un outil de bas niveau, qui se veut simple et performant, dont la principale tâche est de gérer l'évolution du contenu d'une arborescence.
Git indexe les fichiers d'après leur somme de contrôle calculée avec la fonction de hachage SHA‑1. Quand un fichier n'est pas modifié, la somme de contrôle ne change pas et le fichier n'est stocké qu'une seule fois. En revanche, si le fichier est modifié, les deux versions sont stockées sur le disque.
Contrastant avec les architectures de logiciel de gestion de versions habituellement utilisées jusqu'alors, Git repose entièrement sur un petit nombre de structures de données élémentaires. Linus Torvalds expliquait ainsi : « Par bien des aspects, vous pouvez considérer Git comme un simple système de fichiers. Il est adressé par contenu, et possède la notion de versionnement, mais je l'ai vraiment conçu en prenant le point de vue d'un spécialiste des systèmes de fichiers (après tout, j'ai l'habitude de travailler sur des noyaux) et je n'avais absolument aucune envie de créer un système de gestion de version traditionnel. »[7] Les premières versions de Git offraient une interface rudimentaire pour manipuler ces objets internes avant que les fonctionnalités courantes de gestion de version ne soient ensuite progressivement ajoutées et raffinées.
Git est considéré comme performant, au point que certains autres logiciels de gestion de version (Darcs, Arch), qui n'utilisent pas de base de données, se sont montrés intéressés par le système de stockage des fichiers de Git pour leur propre fonctionnement[8],[9]. Ils continuent toutefois à proposer des fonctionnalités plus évoluées.
Dès le début, Git a été pensé dans le but de fonctionner de façon décentralisée. La décentralisation de Git a beaucoup apporté au développement des logiciels libres, puisque le besoin de demander un compte sur un dépôt SVN ou CVS centralisé devient obsolète. Il suffit de forker un projet ou de le cloner pour commencer à travailler dessus (avec tout l'historique du projet en local) et ensuite de proposer sa contribution (pull request) au dépôt principal (mainteneur principal du projet).
Les serveurs Git utilisent par défaut le port 9418 pour le protocole spécifique à Git. Les protocoles HTTP, HTTPS et SSH (et leurs ports standards) peuvent aussi être utilisés.
Git possède deux structures de données : une base d'objets et un cache de répertoires. Il existe quatre types d'objets :
La base des objets peut contenir n'importe quel type d'objets. Une couche intermédiaire, utilisant des index (les sommes de contrôle), établit un lien entre les objets de la base et l'arborescence des fichiers.
Chaque objet est identifié par une somme de contrôle SHA-1 de son contenu. Git calcule la somme de contrôle et utilise cette valeur pour déterminer le nom de fichier de l'objet. L'objet est placé dans un répertoire dont le nom correspond aux deux premiers caractères de la somme de contrôle. Le reste de la somme de contrôle constitue alors le nom du fichier pour cet objet.
Git enregistre chaque révision dans un fichier en tant qu'objet blob unique. Les relations entre les objets blobs sont déterminées en examinant les objets commit. En général, les objets blobs sont stockés dans leur intégralité en utilisant la compression de la zlib. Ce principe peut rapidement consommer une grande quantité de place disque ; de ce fait, les objets peuvent être combinés dans des archives, qui utilisent la compression différentielle (c'est-à-dire que les blobs sont enregistrés sous la forme de différences par rapport aux autres blobs).
Git dispose notamment des commandes suivantes :
git init
crée un nouveau dépôt ;git clone
clone un dépôt distant ;git add
ajoute de nouveaux objets blobs dans la base des objets pour chaque fichier modifié depuis le dernier commit. Les objets précédents restent inchangés ;git commit
intègre la somme de contrôle SHA-1 d'un objet tree et les sommes de contrôle des objets commits parents pour créer un nouvel objet commit ;git branch
pour la gestion des branches ;git merge
fusionne une branche dans une autre ;git rebase
déplace les commits de la branche courante devant les nouveaux commits d’une autre branche ;git log
affiche la liste des commits effectués sur une branche ;git push
publie les nouvelles révisions sur le remote. (La commande prend différents paramètres) ;git pull
récupère les dernières modifications distantes du projet (depuis le Remote) et les fusionne dans la branche courante ;git stash
stocke de côté un état non commité afin d’effectuer d’autres tâches ;git checkout
annule les modifications effectuées, déplacement sur une référence (branche, hash) ;git switch
changement de branche ;git revert
défait les modifications d'un commit précédent ;git remote
gestion des remotes.En tant qu'outil Open source, git est nativement doté d'une interface portable standard en ligne de commande pouvant fonctionner depuis divers types de terminaux.
En complément de l'interface native en ligne de commande, deux interfaces graphiques sont disponibles.
Une interface web est fournie en standard avec Git :
Deux interfaces graphiques sont proposées :
Il existe également d'autres applications offrant une interface de bureau :
D'autres projets fournissent des interfaces web pour Git avec parfois gestion de différents projets, tickets, wiki… :
Il existe différents sites (également appelées forges) généralistes d'hébergement, ainsi que des sites dédiés à des développements en particulier, acceptant des projets liés d'utilisateur, comme l'instance cgit de Kernel.org (noyau Linux) ou les instances Gitlab de Freedesktop.org, GNOME, KDE ou encore de Blender.
Git a été spécialement développé et optimisé pour le noyau Linux. Linus Torvalds a commencé son écriture en avril 2005, pour remplacer le programme propriétaire BitKeeper. En effet, Larry McVoy a révoqué la possibilité d'utiliser gratuitement son logiciel, après qu'Andrew Tridgell eut tenté une rétro-ingénierie sur les protocoles utilisés par BitKeeper. Les raisons de cette révocation restent toutefois controversées.
La première version a été publiée le . Depuis, le développement de cet outil s'est poursuivi. Il a été progressivement amélioré, se voyant doté d'interfaces graphiques, d'interfaces web ou de scripts évolués.
Le Kernel Summit de a été l'occasion pour Linus Torvalds d'annoncer que les versions suivantes du noyau Linux (à partir de la version 2.6.12) seraient développées à l'aide de Git.
Fin , Linus Torvalds a décidé de confier la maintenance et les évolutions de Git à Junio Hamano, expliquant qu'il avait « toujours dit qu'il ne voulait pas vraiment le maintenir sur le long terme ».
Le développement est très actif. La parution de la première version stable (1.0) date du , soit moins d'un an après le démarrage du projet.
Pour des raisons de sécurité, des travaux pour passer l’algorithme de hashage de SHA-1, considéré plus assez sécurisé, à SHA-256 sont en préparations[19],[20].
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.