Utiliser GIT en local
25/09/2013 ⋅ 1 commentaire
J'ai longtemps essayer de mettre en place un système de synchronisation entre mon portable et mes différents PC fixe, de façon à travailler sur mes petits projets comme ce site ou d'autres projets, sans en être vraiment satisfait. La semaine dernièr…
GIT, c'est quoi
GIT est système de gestion de version (VCS en Anglais pour Version Control System). De tels outils permettent de garder une trace des différentes modifications apportées aux fichiers d'un projet, et de revenir à un état antérieur si besoin. Certains systèmes sont locaux. Les modification sont uniquement enregistré sur le poste de l'utilisateur. Cependant, ils sont très souvent centralisés sur un serveur, dans un dépôt, ce qui permet à différentes personnes de collaborer, chacun apportant ses modifications et les mettant à la disposition de tous.
Pour la petite histoire, GIT a été créé par Linus TORVALDS pour aider au développement du noyau Linux. C'est un VCS distribué, c'est à dire que chaque personne qui collabore à un projet dispose sur son poste d'une copie intégrale du projet (modifications comprises) et non simplement la dernière version. Il peut être également utilisé en local.
L'intérêt de GIT à la maison
La gestion de version
L'utilisation d'un tel système peut paraître disproportionné à la maison mais je suis sûr qu'il vous est arrivé de faire votre carte de vœux pour la nouvelle année avec GIMP, de la modifier, de fermer le logiciel, et de vous dire que finalement, la première version était mieux. Mais, pas moyen de revenir en arrière ...
C'est un peu caricatural, mais dès qu'on se lance dans des projets, même domestique, qui commence à prendre un peu de temps ça peut devenir intéressant.
La sauvegarde
A la maison, je dispose d'un NAS. Le répertoire du NAS est partagé par NFS et monté dans le système de fichier local. GIT permet très facilement de mettre un dépôt dans ce répertoire partagé. Les sauvegardes sont faite en deux commandes. Il s'agit de sauvegardes incrémentielles, c'est à dire que seuls les fichiers modifiés sont sauvegardés. C'est donc rapide. Par ailleurs, si le dépôt est copié sur un autre PC, portable par exemple, on dispose de 3 sauvegardes complète du projet sur 3 disques dur différents.
La synchronisation
Ce système permet par la même occasion de travailler sur le même projet avec des machines différentes. Je peux par exemple travailler sur un projet sur le portable en dehors de chez moi, puis le synchroniser en rentrant et continuer sur le même projet su le PC fixe.
Comment s'y prendre
Installer git
Comme d'habitude sous Debian, très facilement
apt-get install git
Créer le projet GIT
Il suffit de se rendre dans le dossier contenant le projet puis
git init
Cela créé un dossier .git qui contient les données de versions
Ajouter les fichiers
On peut choisir les fichiers et dossiers qui font parti du projet. On peut ainsi ne pas metre, par exemple, les sauvegardes automatiques ou tout autre fichiers qu'on ne veut pas sauvegarder. Pour cela
git add <mon_fichier>
On doit lancer cette commande pour chaque nouveau fichier à suivre.
Point de sauvegarde : le commit
Pour dire à git de prendre une photo de l'état du projet, on fait un commit.
git commit
Un éditeur de texte (nano par défaut) s'ouvre alors, vous demandant de commenter votre modification. Une fois le fichier enregistré (ctrl+o sous nano), la modification est enregistrée.
Si vous n'avez fait que modifier des fichiers déjà suivis
git commit -a
Pour intégrer directement le message sans passer par un éditeur de texte
git commit -m "Message du commit"
Revenir en arrière
Si on veut restaurer le projet à un état antérieur, il suffit d'afficher les différents commit avec
git log
La liste contient la date et l'heure, l'auteur et le commentaire saisi, ainsi qu'un numéro. Il suffit de faire
git revert <numero>
Sauvegarder
A ce stade, GIT est utilisé uniquement en tant que gestion de version. Mais si le disque dur local est défaillant, le projet est perdu !
On va donc créer un dépôt qui va servir de sauvegarde et sur lequel, le cas échéant, les autres machines pourront se synchroniser. Chez moi, c'est sur une partition d'un NAS monté par NFS, mais ça peut tout a fait se faire sur un autre disque dur physique de la même machine.
Pour cela, nous allons créer un clone nu de notre projet.
git clone --bare <dossier-de-votre-projet> <nom-du-clone.git>
Cela créé un dossier votre-projet.git avec toute l'arborescence de GIT ... mais sans les fichiers et dossiers réels. C'est un peu déroutant, mais le contenu et le nom des différents fichiers du projets son stockés dans le dossier .git. En un mot, ce n'est pas parce que vos fichiers de travail n'apparaissent pas dans votre dossier .git que l'opération a échouée.
Vous pouvez ensuite déplacer le dossier votre-projet.git à l'emplacement souhaité.
Il faut ensuite signifier à GIT où se trouve le dépôt. Pour cela, dans le dossier de votre projet initial
git remote add origin <url-du-depot>
url-du-depot est le chemin du dossier votre-projet.git dans le cadre d'une utilisation locale.
Pour indiquer que la branche master est la branche principale
git branch --set-upstream master origin/master
Pour sauvegarder votre travail, il suffira de faire
git push
master est le nom de la branche du projet. Le concept de branches semble offrir plein de possibilités afin de créer plusieurs version d'un même projet qui peuvent être fusionnées.
Synchroniser
Depuis une autre machine, à l'occasion d'une première utilisation, il faut cloner le dépôt
git clone <url-du-depot>
Ensuite, depuis n'importe quelle machine, pour récupérer la version la pus récente du projet
git pull
Pour aller plus loin
La méthode présentée ici est simplement celle utilisée par des petites équipes de développement indiquée dans la traduction en français de la documentation de GIT. Il existe d'autres protocoles de communication comme ssh par exemple, qui permettent de travailler non plus en réseau local, mais à travers internet.