Git

FIXME Work in progress…

Tout le monde a au moins une fois travaillé sur un projet de groupe en travaillant sur différents documents. Même si aujourd'hui on peut travailler tous ensemble sur des documents en ligne, parfois on fait face à des problèmes du type: “Où sont passées mes modifications?”, “Qui a écrit cette partie?”, “Quelle est la version la plus récente de ce document?”, … Les logiciels de gestion de version permettent de résoudre tous ces problèmes. A chaque fois que des documents sont modifiés, ces logiciels enregistrent la nouvelle et l'ancienne version, ainsi que des données par rapport à cette modification (auteurs, date et heure, commentaires, …). Cela les rend indispensables pour chaque projet, ce qui en fait des outils indispensables au ClubElek. On va parler de Git, un logiciel libre qui est de plus en plus utilisé.

Panoramique

Git est un logiciel de gestion de version open-source et décentralisé (c'est-à-dire que l'utilisateur n'est pas forcé de se connecter à un serveur pour travailler sur le code source). De plus, il possède plusieurs avantages par rapport à d'autres logiciels comme Subversion:

  • comme déjà dit, Git est décentralisé: une fois téléchargé les documents à modifier, on peut y travailler partout et envoyer ses fichiers quand on le retient opportun, alors que dans un logiciel centralisé il faut être toujours connecté au dépôt pour travailler sur le code. Avec Git, on télécharge tout le projet en local, sans avoir besoin d'aller sur le dépôt central
  • Git est un logiciel rapide et performant (surtout si on veut créer une nouvelle branche du projet, voir les détails plus loin)
  • il y a de nombreux sites qui hébergent des projets versionnés avec Git comme GitHub ou GitLab, où on peut travailler sur des projets publics ou partager les vôtres (que ce soit avec tout le monde ou seulement avec votre équipe)
  • j'ai déjà dit qu'il est open-source?

Bien sûr, Git a aussi des défauts, comme sa complexité (due au fait que le système est décentralisé) ou (pour certains) le fait de devoir travailler sur la console (les programmes avec interface graphique n'offrent pas tous les commandes, mais ils suffisent pour une utilisation “pas trop avancée”). On va essayer ici de lister les commandes de base, en sachant qu'il y a beaucoup de sites Web pour aller plus loin (comme le guide officiel de Git). Si vous souhaitez apprendre à utiliser Git rapidement, voici un site où l'on peut tester les commandes proposées en ligne.

Installation

Git étant un programme, il faut naturellement le télécharger et l'installer.

Linux

Git devrait être déjà présent dans votre ordinateur, sinon installez les paquets git-core ou git et openssh-client (pour l'authentification via SSH, voir plus loin). Ou bien vous pouvez passer par le site officiel: http://git-scm.com/downloads.

Windows

Mac OS X

FIXME La procédure devrait être semblable à celle de Linux, mais on doit vérifier.

Vous pouvez passer par le site officiel.

Commandes de base

git init

Pour commencer à utiliser Git, il faut initialiser un dossier pour le rendre un dépôt Git. Pour cela, il faut entrer dans le dit dossier et taper cette commande, qui va créer un dossier .git (caché sous Linux) et va vous permettre de versionner vos fichiers.

git status

Cette commande permet de contrôler si les fichiers ont été modifiés depuis les dernières modifications. On peut avoir les cas suivants:

  • le fichier n'est pas suivi (c'est-à-dire que Git n'enregistre pas ses changements), il est alors un untracked file
  • le fichier est suivi et il a des modifications à enregistrer (fichier créé, modifié, …). Si vous les avez ajoutés à la liste des modifications à enregistrer (voir git add), il sera dans la section changes to be committed, sinon il sera dans changes not staged for commit.
  • le fichier est suivi, mais il n'a pas été modifié. Il n'apparaîtra donc pas ici.

git add

Cette commande ajoute les fichiers modifiés dans la liste des modifications à valider (voir git commit).

git commit

Cette commande enregistre les modifications effectuées aux fichiers choisis. Il faut aussi écrire un message pour résumer les modifications, sinon la sauvegarde ne se fera pas.

Une petite image pour résumer ces commandes:

 Cycle de vie d'un fichier avec Git

git checkout

git rm

git branch

git pull

git push


Les dépôts sont des grains GitLab sur le Sandcats du club.

Comment cloner un dépôt

Linux / Mac OS X

Tout peut se faire en ligne de commande :

  • Ouvrir un terminal et naviguer jusqu'au dossier où on veut cloner le dépôt.
  • Utiliser la commande donnée par Gitlab

Windows

On peut le faire graphiquement ou en ligne de commande.

Graphiquement :

  • Ouvrir un explorer et naviguer jusqu'au dossier où on veut cloner le dépôt.
  • Faire un clic droit ⇒ Git GUICloner un dépôt existant. Mettre l'URL donnée par Gitlab comme URL du dépôt.
  • Cliquer sur Clone.

En ligne de commande :

  • Lancer Git-Bash
  • Suivre la même méthode que sous Linux

Documentation

Il existe de nombreux tutoriels à propos de Git sur internet.

En voici quelques-uns :

N'hésitez pas à demander conseil à des gens du ClubElek qui sont habitués à Git.