Git

De WikiLirmm
Aller à la navigation Aller à la recherche

Git, c'est quoi ?[modifier]

Le versioning[modifier]

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[modifier]

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[modifier]

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[modifier]

Linux[modifier]

Selon votre distribution:

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

MacOS X[modifier]

Git pour MacOS X

Windows[modifier]

Git pour Windows

Utiliser un client Git[modifier]

Linux[modifier]

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.

Pour l'utilisation de git en ligne de commandes, ultimate-git-ps1-bash-prompt permet la personnalisation du prompt en apportant un feedback visuel sur l'état du dépôt git (un incontournable). Vous pourrez avoir besoin de modifier le script en remplaçant

grep "nothing to commit"

par

grep "rien à valider"

si git vous parle en français (cf. git status).

MacOS X[modifier]

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

Windows[modifier]

Smartgit est aussi disponible sur Windows.

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

Intégré à votre éditeur de texte[modifier]

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

Utilisation basique de Git[modifier]

Créer un nouveau projet[modifier]

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[modifier]

git clone <url du projet>

Faire son premier commit[modifier]

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

Voir l'historique des commits[modifier]

git log

Connaître sa situation depuis le dernier commit[modifier]

git status

Astuce: Ne pas versionner les mauvais fichiers[modifier]

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[modifier]

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[modifier]

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[modifier]

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[modifier]

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

Département Robotique: Gitlab[modifier]

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[modifier]

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[modifier]

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[modifier]

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

Récupérer la version du serveur[modifier]

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

Introductions aux branches[modifier]

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[modifier]

git checkout -b <ma nouvelle branche>

Se déplacer entre les branches[modifier]

git checkout <ma branche>

Merger une branche vers une autre[modifier]

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

Supprimer une branche[modifier]

git branch -d <la branche à supprimer>

Pour aller plus loin: Resources[modifier]

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 ;).