Pourquoi utiliser git ?
Git est un outil de gestion de versions. Il permet de
- stocker les modifications d'un projet
- consulter l'historique de ces modifications
- partager cet historique avec les autres membres du projet
- récupérer le projet tel qu'il était à un instant donné
- gérer les potentiels conflits entre plusieurs modifications d'un même fichier
C'est donc un outil qui est très utile pour des projets communs à plusieurs personnes. Il peut également être utilisé par une personne qui travaille seule sur un projet. Dans ce cas, il permet de conserver l'historique des modifications, de pouvoir revenir à des versions précédentes facilement ou encore de tagger des versions particulières pour référence.
S'il est installé sur un cloud ou sur un serveur distant, git peut également tout simplement servir d'outil de back-up.
Fonctionnement de git
C'est un système distribué : chaque projet a un répertoire central (aussi appelé "repository" ou "repo") et le ou les participants au projet téléchargent chacun une copie de travail de ce répertoire central en local sur leur appareil (ils "clonent" le repo central). Toutes les instances (les "clones") de projets peuvent évoluer de façon indépendante. Les différents utilisateurs peuvent modifier simultanément le code sur leur copie de travail sans impacter les autres. Chaque utilisateur a en local une copie complète du répertoire central.
Lorsqu'il le souhaite, un utilisateur peut ensuite envoyer ses modifications vers le répertoire central (il "pushe"). Les autres utilisateurs peuvent ensuite récupérer ces modifications dans leur copie de travail locale (ils "pullent"). Les éventuels conflits entre différentes versions des fichiers sont résolus au niveau du répertoire central lors des pushs. Ce fonctionnement est le plus simple, il s'applique pour des repos de dépôt de codes indépendants les uns des autres, comme celui de Cellule_GEE.
Dans le cas de repos utilisés pour du développement logiciel, ce fonctionnement n'est pas applicable. En effet, plusieurs développements indépendants peuvent se faire en parallèle sur des durées longues. Il est nécessaire pendant la durée de ces développements d'avoir accès à git pour pouvoir gérer les évolutions du développement 1, sans pour autant impacter le développement 2. Il est également primordial de toujours pouvoir avoir accès à une version stable du code. On utilisera alors des branches. La version stable du code sera sur la branche principale, toujours appelée main ou master. Les développements 1 et 2 se feront indépendamment chacun sur leur branche. Chaque branche est indépendante. Il est possible à partir de son clone local de passer d'une branche à l'autre en fonction de ses besoins. Lorsqu'un développement est fini, sa branche est fusionnée avec la branche principale (on fait un "merge").
Dans l'utilisation simple, tous les "push" se feront directement sur le main sans utiliser d'autres branches. Le main est la branche principale, qui existe dans tous les projets et est créé par défaut à l'initialisation d'un nouveau projet.
Qu'est-ce que GitHub / GitLab ?
Il est possible d'utiliser git seul en installation locale. Mais souvent, il est utilisé via des plateformes en ligne qui permettent de collaborer facilement avec d'autres personnes. GitLab et GitHub sont les principales plateformes utilisées aujourd'hui. Ce sont donc des plateformes d'hébergement de code, toutes les deux basées sur le système Git. Elles intègrent en plus des outils de gestion de projet et d'intégration continue. Elles sont accessibles en ligne de commande et via des interfaces graphiques.
Il est possible de créer un compte sur GitHub et GitLab avec une adresse email. Les deux plateformes permettent d'héberger du code dans leur cloud. La version gratuite des deux est amplement suffisante pour des projets de petite échelle.
Le code hébergé sur ces plateformes peut être visible par tous les utilisateurs de la plateforme ou privé et réservé uniquement à certaines personnes sur invitation.
Les logiciels de développement (Pycharm, R-studio etc) incluent tous un interfaçage direct avec git, à la fois pour des installations locales et pour des dépôts sur GitHub et GitLab.
dépôt Gitlab de l'Université de Montpellier
https://gitlab.etu.umontpellier.fr/users/sign_in
accessible uniquement avec une adresse @umontpellier.fr
dépôt Gitlab de l'IRD
https://forge.ird.fr/explore/projects
accessible avec les logins Renater
Github / Gitlab sans mot de passe
Il est possible d'ajouter une clé ssh directement dans son profil GitHub/GitLab pour éviter d'avoir à rentrer des mots de passe à chaque opération vers le dépôt central.
Pour créer une clé SSH, suivre les instructions de la page sur les clés SSH.
Il faut aller sur l'interface graphique de la plateforme, puis dans compte > préférences > SSH keys et ajouter sa clé ssh publique.
Ressources
- Documentation officielle de git: https://git-scm.com/doc
- Et la version en français