Utiliser Git quotidiennement en tant qu’utilisateur
Dans cet article, je vais essayer de vous convaincre qu’utiliser git quotidiennement (sans pour autant être développeur de gros projets) peut être extrêmement avantageux.
Qu’est ce que Git ?
Comme le dit si bien wikipedia, git est un gestionnaire de version… décentralisé. D’abord, gestionnaire de version : c’est un outil utilisé lorsqu’on veut monter un vrai projet informatique digne de ce nom. Il apparait rapidement une nécessité de conserver l’historique des modifications du code afin de savoir qui a fait quoi, quand, pourquoi et bien (bien) plus encore… Ainsi, on peut aisément revenir en arrière lorsqu’on est parti dans une impasse.
Décentralisé signifie que vous n’avez pas besoin de vous connecter à un serveur distant (contrairement à svn si vous connaissez), et ce sera pour nous très intéressant.
Git a été codé pour le noyau linux, son développement est très récent. Il se trouve être très performant et relativement facile d’emploi. Il est d’ailleurs de plus en plus utilisé.
Oui, mais je ne suis pas développeur !
…mais ça peut tout de même vous intéresser. Je vais dire que cela vous intéressera si vous êtes un minimum bidouilleur comme moi sur votre machine. Je modifie ou crée bon nombre de fichiers de configuration (irssi, vim, conky, les alias, screen et j’en passe) ou encore de coder quelques petits scripts maisons qui rendent la vie plus facile. Si vous êtes comme moi, vous avez alors notamment le soucis du changement de machine. Récupérer les fichiers de conf et scripts un à un est fastidieux. Quand bien même on le fait et que l’on exporte tout sur la machine n°2, on sera tenté de modifier encore et encore ces petits fichiers parce que la perfection se recherche au quotidien. Qui dit modifications, dit repropager à la main les modifications (ou transférer le fichier… ce qui est la même chose).
Plus ou moins convaincu ? Bon, allez, c’est parti.
Ci-gît mes fichiers…
Le gestionnaire de paquets de votre distribution doit vous permettre d’installer git sans trop de soucis.
Dans mon home, je lance donc un :
git init
L’effet de se crée un répertoire .git (caché donc) qui va contenir tout plein de choses dont on n’a pas à se soucier. C’est à faire qu’une seule fois, au tout début. Ensuite :
git add .vimrc
aura pour effet que le fichier .vimrc soit pris en considération par git. Il le connait désormais. Pour en être certain, faites un
git status
vous verrez alors quelque chose comme
# On branch master## Initial commit## Changes to be committed:# (use « git rm –cached <file>… » to unstage)## new file: .vimrc
On voit que .vimrc est un nouveau fichier et qu’il doit être « commité ». Exécution :
git commit .vimrc -m ‘premier commit de vimrc’
-m permet de spécifier un message. Tout commit doit être accompagné d’un commentaire. Si vous ne le mettez pas, il ouvrira un éditeur texte pour que vous le fassiez. Plutôt que de lister tous les fichiers lorsqu’il y en a plusieurs, vous pouvez utiliser l’option -a. La commande
git log
permet de lister les actions passées.
Et voilà, vous savez tout !
Euh, oué, et alors ?
Placez-vous dans /tmp (cd /tmp), crée un sous répertoire si besoin et placez vous dedans puis lancez
git clone /home/toto
(si votre login est toto et que votre git se trouve dans votre home comme je l’ai fait ci-dessus)
Faites un ls… Que voyez vous ? votre fichier .vimrc. Magique non ? Si vous en avez ajouté d’autres, ils y seront tous ! Lancez un git status. Et oui, il vous répond comme si vous étiez dans votre home. C’est normal, vous avez cloné d’un coup tous vos fichiers versionés. Je pense que vous voyez de suite l’intérêt que git va avoir. on va pouvoir copier les fichiers facilement d’un endroit à un autre.
On peut centraliser un minimum ?
Git permet bien sûr d’envoyer ses fichiers sur un serveur… git. Ainsi, votre dépôt sera accessible depuis le web. C’est très pratique pour voyager léger et partager avec ses amis. Bon nombre de sites proposent ce genre de service, j’aime beaucoup gitorious pour son coté interface sympathique. Les puristes préfèreront sans doute http://repo.or.cz/.
A l’heure où j’écris ces lignes, mon dépôt n’est pas encore monté pour que je puisse vous le montrer. Qu’à cela ne tienne, vous pouvez regarder cette liste ou créer un dépôt (dont il est possible de supprimer ultérieurement).
Les commandes pour gérer (envoyer et recevoir les fichiers) sont spécifier sur le site. Je ne vais donc les répéter ici. A noter que vous avez besoin d’une clef GPG pour les communications. Cela dépasse le cadre se cet article, je vous renvoie à la documentation de votre distribution ou par ex à cette page mémo bien faite.
Au final…
…où que vous soyez, vous aurez accès à vos fichiers de configuration rapidement et simplement soit via internet soit en ayant pris quelques précautions (clef USB), mais dans tous les cas, la gestion est grandement simplifiée.
Nul besoin d’être connecté à internet pour « commiter » contrairement à svn par ex. Ainsi, si vous modifier un fichier en antarctique, vous pouvez versionner la modification.
Le partage de ses fichiers persos avec ses amis est alors très facile. De plus, vous pourrez facilement revenir en arrière (je sais, je n’ai pas expliqué cela) etc… et ceci offre par la même occasion un bon système de sauvegarde.
Aller plus loin
Git est, vous vous en doutez, bien plus puissant que ces trois ou quatre commandes que j’ai pu vous donner. Générer des différences (patchs), créer des branches (utilisé pour travailler sur des évolutions différentes), les merger (fusionner), travailler en collaboration (git peut être utiliser pour la rédaction d’un document latex par ex) sera très très facile au point que vous vous demanderez pourquoi la planète entière n’utilise pas git.
Le web commence a recevoir de nombreux tutos sur cet outil (par ex, ce site.) Il est possible de configurer à sa sauce git avec un fichier .gitconfig (un bon moteur de recherche vous mènera à divers exemples…)
Bref, j’espère vous avoir donné des clefs pour entrevoir l’intérêt et vous documenter efficacement pour votre utilisation. Les (futurs) codeurs ne seront que doublement satisfait d’apprendre ce logiciel. L’administrateur système se portera cette utilisation sur un /etc…
Bon amusement.