Présentation de Git et de GitHub

Dans cette première leçon, nous allons définir précisément ce que sont Git et GitHub afin d’éviter des confusions plus tard. Nous allons également comprendre pourquoi Git est si populaire et pourquoi les systèmes de gestion de version sont incontournables aujourd’hui.

 

Qu’est-ce que Git ?

Git est un logiciel de versioning créé en 2005 par Linus Torvalds, le créateur de Linux.

Un logiciel de versioning, ou logiciel de gestion de version est un logiciel qui permet de conserver un historique des modifications effectuées sur un projet afin de pouvoir rapidement identifier les changements effectuées et de revenir à une ancienne version en cas de problème.

Les logiciels de gestion de versions sont quasiment incontournables aujourd’hui car ils facilitent grandement la gestion de projets et car ils permettent de travailler en équipe de manière beaucoup plus efficace.

Parmi les logiciels de gestion de versions, Git est le leader incontesté et il est donc indispensable pour tout développeur de savoir utiliser Git.

 

A quoi sert concrètement un système de gestion de version ?

Imaginez que vous possédiez un site web. A chaque fois que vous voulez modifier quelque chose sur le site ou tester une fonctionnalité, vous êtes obligé d’effectuer une sauvegarde du site avant l’implémentation afin de pouvoir le restaurer si quelque chose se passe mal.

Jusqu’ici, le procédé est contraignant car vous allez devoir effectuer une sauvegarde complète et restaurer la sauvegarde en cas de problème mais cela ne semble pas très complexe ni insurmontable.

Imaginez maintenant que vous soyez 10 à travailler sur le même site web, en vous occupant chacun de développer des fonctionnalités différentes mais qui peuvent être liées entre elles. L’organisation du travail est ici beaucoup plus complexe puisqu’il va falloir s’assurer :

  • Que les fonctionnalités sur lesquelles travaillent un développeur ne rentrent pas en conflit avec les fonctionnalités sur lesquelles travaillent des autres développeurs ;
  • Que chaque développeur sache sur quoi travaillent les autres développeurs afin de travailler correctement ;
  • que chaque développeur possède une version actualisée du site pour tester et implémenter ses fonctionnalités.

Ici, l’idée la plus logique serait de mettre en place un serveur distant qui contiendrait l’historique des modifications faites par chaque développeur afin que chacun ait accès aux avancées des autres. Chaque développeur pourrait également copier l’intégralité du contenu du serveur pour travailler en local sur sa machine. On vient ainsi de créer un système de gestion de version décentralisé rudimentaire.

Grosso-modo, les logiciels de versioning et Git en particulier vont nous permettre d’effectuer ces opérations mais de manière beaucoup plus robuste et avec de nombreuses fonctionnalités supplémentaires très utiles (possibilité de synchroniser son dossier local avec le serveur, connexion aux autres projets et mise à jour des différences automatisée, etc.

Git permet de coordonner le travail entre plusieurs personnes en conservant un historique des changements effectués sur des fichiers.

Git permet à différentes versions d’un même fichier de coexister. Les développeurs travaillant avec Git ont accès à l’historique des modifications pour l’intégralité du projet et peuvent ainsi savoir quels changements ont été fait par rapport à leur version des fichiers, qui a fait ces changements, etc.

 

Les deux modèles des logiciels de gestion de version : modèle centralisé vs modèle décentralisé

Les logiciels de gestion de version sont aujourd’hui tous construits sur l’un des deux modèles suivants : le modèle centralisé ou le modèle décentralisé encore appelé modèle distribué.

Le principe de base d’un modèle centralisé est la centralisation du code source lié au projet : la source du code du projet est hébergé sur un serveur distant central et les différents utilisateurs doivent se connecter à ce serveur pour travailler sur ce code.

Dans un modèle distribué, le principe de base est opposé : le code source du projet est toujours hébergé sur un serveur distant mais chaque utilisateur est invité à télécharger et à héberger l’intégralité du code source du projet sur sa propre machine.

Le modèle distribué a été popularisé par Git et présente différents avantages notables par rapport au modèle centralisé :

  • Simplicité / flexibilité du travail : Comme chaque utilisateur peut héberger le code du projet, on n’a plus besoin d’être constamment connecté à un serveur central et on peut donc travailler en ligne sur sa propre machine ;
  • Sécurité : Comme chaque utilisateur possède le code complet d’un projet, on peut utiliser la copie du projet d’un utilisateur comme back-up en cas de corruption du serveur central.

 

Qu’est-ce que GitHub ?

Git est un logiciel de gestion de version. Git va nous permettre d’enregistrer les différentes modifications effectuées sur un projet et de pouvoir retourner à une version précédente du projet.

Dans le langage des systèmes de gestion de version, la copie de l’intégralité des fichiers d’un projet et de leur version située sur le serveur central est appelé un dépôt. Git appelle également cela “repository” ou “repo” en abrégé.

GitHub est un service en ligne qui permet d’héberger des dépôts ou repo Git. C’est le plus grand hébergeur de dépôts Git du monde.

Une grande partie des dépôts hébergés sur GitHub sont publics, ce qui signifie que n’importe qui peut télécharger le code de ces dépôts et contribuer à leur développement en proposant de nouvelles fonctionnalités.

Pour récapituler, et afin d’être bien clair sur ce point : Git est un logiciel de gestion de version tandis que GitHub est un service en ligne d’hébergement de dépôts Git qui fait office de serveur central pour ces dépôts.

Nous verrons comment utiliser GitHub en détail dans ce cours après avoir appris à utiliser Git.

Laisser un commentaire

© Pierre Giraud - Toute reproduction interdite