Quelques commandes de bases de git

Billet posté le 21 juin 2016

C’est quoi git ?

git est un logiciel de versions décentralisé. Autrement dit, à chaque étape de votre code (ou autre en fait) vous avez la possibilité d’enregistrer tous les changements effectués et revenir rapidement en arrière si vous le désirez.

La plupart des personnes qui font de la programmation utlisent un gestionnaire de révsion. On peut citer par exemple le vénérable RCS, ou CVS. Dans les plus récents nous trouvons SVN ou bien Mercurial.

On m’a même parlé via twitter de PVCS que je ne connaissais même pas ;-)

J’ai entendu parler de git il y a déjà de nombreuses années, à l’époque où le noyau Linux utilisait encore le logiciel bitkeeper. La suite de l’histoire peut être lue ici et ici aussi.

Bref, git est né très rapidement après.

Pourquoi git ?

Je ne suis pas codeur, alors pourquoi aurais-je besoin d’un outil de ce type ? Depuis peu, mon moteur de blog est hugo (voir ici). Et de ce fait chaque article que j’écris est au format markdown. Quand je commence un article il peut se passer plusieurs jours avant que celui-ci ne soit fini et/ou que j’ai commencé à écrire l’article depuis chez moi et que je finis l’écrire sur mon temps de pause au boulot.

Étant donné que git est décentralisé chaque personne peut ainsi avoir son propre dépôt local qui est synchronisé avec un dépôt distant.

Soyons clair je ne dois utiliser que 15% des possiblités de git mais étant donné que ça me suffit et que je trouve ça vraiment utile je me suis dit que je pourrais partager ces quelques connaissances.

Créer un dépôt distant

Nous considérons ici une utilisation assez standard. En effet, vous avez un serveur Linux ou BSD libre avec un accès SSH et un petit peu de place disque de disponible. C’est ici où notre dépôt git sera installé.

Connectez-vous via SSH sur votre serveur et dans le dossier de votre choix nous allons initialiser notre premier dépôt git :

cd /home/<mon_user>
mkdir <mon_depot.git>
cd <mon_depot.git>
git init --bare

Et c’est tout sur notre serveur ! Plutôt simple non ?

Les commandes de base

Toutes les commandes suivantes sont à exécuter sur votre poste de travail.

Configurer rapidement son client git

Sur son poste de travail et dans le répertoire de l’utilisateur vous allez créer un fichier appelé $HOME/.gitconfig contenant quelque chose comme ceci :

[user]
	name = Prénom Nom
	email = email@domain.tld
[core]
	editor = vim
[push]
	default = simple

Cloner (ou l’attaque des clones)

Tout d’abord il convient de cloner le dépôt git afin de récupérer la dernière version des données depuis le serveur :

git clone <user>@<serveur>:/chemin/du/depot/git

Travailler dans son dépôt

Vous ajoutez ou modifiez des fichiers comme d’habitude avec votre éditeur de texte préféré puis on ajoute une couche de git par dessus.

Quelles sont les modifications en cours ?

git status

Cette commande vous indique si vous avez fait une modification d’un document déjà existant ou bien si vous avez crée un nouveau fichier dans le dépôt.

Pour une modification de fichier il suffit de faire :

git commit -a
Et vous êtes invité à saisir un message pour expliquer votre modification.

Pour un nouveau fichier crée il faut alors indiquer à git en tout premier lieu que le fichier est bien à prendre en compte :

git add fichier

Envoyer les modifications sur le dépôt

La commande ci-dessous permet d’envoyer tous les fichiers que vous avez modifié depuis votre dépôt local vers le dépôt distant :

git push

Obtenir la dernière copie depuis le dépôt distant

Si vous êtes plusieurs à travailler sur un même projet ou si vous travaillez depuis plusieurs ordinateurs il convient donc d’avoir la copie la plus à jour auprès du dépôt distant. De ce fait, depuis votre poste de travail il convient simplement d’exécuter la commande suivante pour récupérer la version la plus à jour du dépôt distant :

git pull

Qui a fait quoi et quand ?

Dans un projet on effectue en permanence des ajouts et des modifications sur les fichiers et des fois on a besoin de se raffraichir la mémoire en relisant le pourquoi du comment on a fait fait telle ou telle opération.

La commande suivante montre les messages que vous avez saisis après chaque commit :

git log

Backup

Sur le serveur qui a le dépôt git j’ai mis en place une simple crontab :

15 22 * * * cd /home/git && tar cfz
/backup/git/hindy.lovetux.net-$(/bin/date +\%d).tgz
hindy.lovetux.net.git

Conclusion

Depuis que je suis amené à manipuler des fichiers depuis plusieurs postes de travail avec hugo je me suis mis à utiliser git. Au début je pensais que son utilisation allait être pénible et complexe puis au final avec moins d’une dizaine de commandes on s’en sort très facilement. Attention, mon utilisation reste plutôt basique : je ne fais pas de merge, pas de branche, ni plein de fonctionnalités très avancées de git.

Documentation complémentaire et liens