Git

De WikiLirmm
Aller à la navigation Aller à la recherche

Git, c'est quoi ?

Le versioning

Pour faire très simple, le versioning de fichier permet de gérer les resources d'un projet, en gardant un historique des différentes versions, en permettant de partager naturellement du code entre plusieurs collaborateurs, de gérer plusieurs versions d'un projet en même temps, de structurer son développement.

Git vs. SVN

En un caractère : Git > SVN !

SVN a longtemps régné en maître comme système de versionning, mais souffrait de nombreux problèmes inhérents à son architecture, et brillament corrigés par Git. Par exemple, Git est plus rapide, plus optimisé dans sa gestion des branches, moins dépendant d'une connexion internet, etc.

Pour mieux comprendre la différence, regardez cette vidéo.

Git vs Mercurial

Mercurial est un autre système de versioning, lui aussi de grande qualité. Cependant il est moins répandu, et nous vous recommandons de commencer par Git.

Installer Git

Linux

Selon votre distribution:

# pacman -S git
# apt-get install git
# yum install git
...

MacOS X

Git pour MacOS X

Windows

Git pour Windows

Utiliser un client Git

Linux

Sur un système Unix, Git révèle toute sa puissance lorsqu'il est utilisé en ligne de commande. Toutefois, vous pouvez opter pour un client comme Smartgit pour vous mettre en confiance.

MacOS X

Tower semble populaire sous Mac, mais il est payant. Comme les utilisateurs Linux, les utilisateurs Mac peuvent facilement utiliser la ligne de commande

Windows

Smartgit est aussi disponible sur Windows.

TortoiseGit Permet d'intégrer Git dans le navigateur de fichier (accesible avec un clic droit)

Intégré à votre éditeur de texte

Il aussi est très possible que votre éditeur de texte propose une intégration de Git.

Utilisation basique de Git

Créer un nouveau projet

Tout d'abord, créez un répertoire vide, ou déplacez vous vers le répertoire existant à versionner. Ensuite, lancez:

git init

Récupérer un projet existant

git clone <url du projet>

Faire son premier commit

git add <mon fichier>
git commit -m "<description du commit>"

Voir l'historique des commits

git log

Connaître sa situation depuis le dernier commit

git status

Astuce: Ne pas versionner les mauvais fichiers

Si vous ne souhaitez pas versionner certains fichiers (fichiers de log, binaires générés, informations relatives aux mot de passes...), créez un fichier .gitignore à la racine du projet versionné, et écrivez tous les fichiers que vous souhaitez ignorer. Par exemple, pour ignorer tous les fichiers .log, insérez dans .gitignore :

*.log

Se synchroniser avec un seveur distant

Git trouve réellement son intérêt lorsqu'il est synchronisé avec un serveur distant (remote). Ainsi, vous disposez d'un backup complet en cas de perte de vos données locales, et vous pouvez collaborer à plusieurs sur un même projet.

À noter: en terme d'architecture, Git est totalement décentralisé. Cependant, par soucis de simplicité, il est conseillé d'opter pour un serveur central auquel tous les collaborateurs se rattachent.

Les services disponibles au LIRMM

Il existe plusieurs solutions pour bénéficier d'un serveur Git au sein du LIRMM. Certains utilisent un serveur interne à leur équipe. Si ce n'est pas votre cas, voici quelques resources disponibles.

Pour les projets Open-Source: GitHub

Github est la plateforme qui offre le plus de visibilité actuellement pour un projet open-source, et propose une très bonne interface web pour gérer un projet avec Git.

Les doctorants peuvent profiter de pack étudiants pour avoir 5 projets gratuits, mais leur utilisation n'est pas recommandée par le CNRS.

Au sein du LIRMM

Gitlab est un clone Open-Source de Github. Le LIRMM a mit à disposition un serveur gitlab.

Département Robotique: Gitlab

Pour les membres du département robotiques, vous pouvez utiliser sans contraintes ce Gitlab. Il est aussi possible d'inviter des membres externes sur un projet.

GitLab de l'université de Montpellier

L'Université de Montpellier propose elle aussi son gitlab, avec cependant quelques contraintes dans le nombres de projets par personnes.

Définir un serveur distant

git remote add origin <url du server>

(astuce: si vous avez récupéré votre projet avec git clone, le serveur existe déjà sous le nom de origin.)

Envoyer sa version sur le serveur

git push origin <ma branche> (au plus simple, remplacez ma branche par "master")

Récupérer la version du serveur

git pull origin <ma branche> (au plus simple, remplacez ma branche par "master")

Introductions aux branches

Les branches permettent de quitter le modèle linéaire des commits, et d'avoir plusieurs versions d'un projet en parallèle (chaque branche pouvant évoluer de manière indépendante des autres). Les branches peuvent aussi être fusionnées (mergées), par exemple pour intégrer des changements sur la branche principale.

Contrairement à son ancêtre SVN, Git a une gestion très optimisée des branches, et encourage fortement à en utiliser.

Pour avoir un apercu d'un workflow avancé en utilisant des branches, vous pouvez consulter Git Flow.

Créer une branche

git checkout -b <ma nouvelle branche>

Se déplacer entre les branches

git checkout <ma branche>

Merger une branche vers une autre

git merge <la branche à merger> (depuis la branche qui va recevoir le merge)

Supprimer une branche

git branch -d <la branche à supprimer>

Pour aller plus loin: Resources

Le livre Pro Git est incroyablement complet. Nous vous recommandons au moins la lecture du chapitre 2, qui pose des bases très solides.

Ensuite, Atlassian propose aussi des tutoriels intéressants.

Enfin, de nombreuses questions sur Git peuvent être résolues grâce à StackOverflow ;).