Actions

Cours

Cours:Versioning avec Git

De GBLL, TAL, ALAO, etc.

Il existe pléthore de tutoriels sur Git, cette page ne se donc pas pour objectif de présenter le logiciel en profondeur, mais seulement de le présenter brièvement et centraliser quelques liens utiles pour télécharger, utiliser et comprendre Git.

En bref

Git est un logiciel de gestion de versions décentralisé. C'est un logiciel libre créé par Linus Torvalds, auteur du noyau Linux, et distribué selon les termes de la licence publique générale GNU version 2. En 2016, il s’agit du logiciel de gestion de versions le plus populaire qui est utilisé par plus de douze millions de personnes. (source:[1])

En gros, Git vous permet de tenir un historique de toutes les modifications que vous faites dans votre code, et permet de revenir facilement en arrière si besoin. De plus, si vous travaillez en équipe, vous pouvez utiliser un hébergement distant (comme Github ou GitLab) pour travailler avec un historique commun, sauvegarder votre code, et gérer facilement les conflits de fusion lorsque deux développeurs mettent en ligne des modifications différentes du même élément.

Rien de mieux qu'un petit tuto vidéo pour comprendre les bases. En voici un avec l'accent du Sud-Ouest.

Git vous permet également de créer des branches de travail dans votre projet. Par exemple, imaginons que vous avez développé un logiciel. Un jour, vous souhaitez implémenter de nouvelles fonctionnalités, mais pour éviter de tout chambouler dans votre code qui marche, vous pouvez créer une nouvelle branche, y faire tout ce que vous avez à faire, et si vous êtes satisfaits, vous la fusionnerez ensuite avec la branche principale de votre projet (master).

Principe des branches sur Git

En général, la branche principale (master) est réservée pour le code fonctionnel, la vitrine de votre projet. Toutes les fonctionnalités de votre programme sont développées sur des branches de développement, puis fusionnées régulièrement avec la branche principale.

Exemple d'utilisation avancée des branches

Téléchargement

Pour Windows, je vous conseille d'installer Git Bash. Pour Linux vous l'avez déjà en principe. Pour Mac (ou Windows) rendez-vous sur ce site pour télécharger la version qui vous intéresse.

Remote Git

Il existe plusieurs services vous permettant de tenir un journal de gestions de versions de votre code. Le plus connu est probablement GitHub. Nous utiliserons dans ce cours le service Gricad-GitLab de l'UGA. Le fonctionnement est très similaire à celui de GitHub, ou d'autres services comme Bitbucket.

Commandes de base au terminal

Pour ouvrir un terminal : WINDOWS avec Git Bash : Dans le dossier de votre choix, clic droit puis Git Bash Here ; WINDOWS avec terminal DOS : windows+r puis entrez "cmd", vous pouvez aussi utiliser un logiciel comme PowerShell ; Linux : ctrl+alt+t, ou dans un dossier clic droit puis ouvrir dans un terminal ; Mac : entrez "terminal" dans le dock.

Navigation basique dans le système de fichiers (en Bash) :

  • cd chemin/du/dossier, pour se déplacer vers un dossier ;
  • ls, pour lister les fichiers et dossiers ;
  • mkdir nomDuDossier, créer un nouveau dossier ;
  • cp chemin/du/fichier nouveau/chemin, copier un fichier d'un point A à un point B ;
  • rm fichier, supprimer un fichier (ne passe pas par la corbeille!).

Commandes Git de base :

  • git init, initialiser Git dans un nouveau dossier ;
  • git config --global user.email "bla@bla.fr", renseigner son email de contact (si vous ne l'avez jamais fait);
  • git config --global user.name "Jacques", renseigner son nom ;
  • git config --global color.ui true, active la coloration syntaxique de Git (c'est plus sympa) ;
  • git config --list, liste la configuration de Git ;
  • git add ., ajoute toutes les dernières modifs pour commit ;
  • git commit -m "Description des modifications", commit les modifications ;
  • git status, permet de savoir quelles modifications sont en attentes d'être commit ;
  • git log, affiche la liste des derniers commits ;
  • git log --oneline, pareil mais chaque commit sur une ligne ;

Commandes un peu plus avancées :

  • git clone AdresseProjetGitDistant, clone un projet git distant sur votre ordinateur ;
  • git pull, récupère les dernières modif enregistrée sur le git distant ;
  • git push, envoie les dernières modif locales vers le git distant ;
  • git checkout nomBranche, se déplacer vers la branche nomBranche ;
  • git branch, lister les branches (et vérifier où on est) ;
  • git merge master, fusionne la branche courante à la branche principale (master).