Mise en place du système de versioning Git.
Présentation
Il arrive que l’on fasse pas mal de changement sur certains projets et au bout d’un moment tous par en cacahuète.
Habituellement, je faisais des archives avec la date au format %Y-%m-%d-%H:%M
en préfixe.
Le problème de cela et que je j’oubliais assez rapidement à quelle modification correspondent ces archives…
D’une autre part, j’ai pris pour habitude de faire des snapshots sur mes machines virtuelles en mettant en commentaire les informations nécessaires.
La solution étais sous mes yeux et que je n’osais pas prendre en main est git que j’ai appris a utilisé
grâce au tutoriel du site du zéro.
Le but de cet article n’est pas de faire un tutoriel sur git mais plutôt de présenté un exemple d’application simple.
Voyez ci-dessous à quoi peut ressembler le résultat avec le dépôt sur lequel je versionne ma configuration d’Home Assistant :
On va donc voir ici comment mettre en place se système.
Configuration
Serveur
Le server est l’endroit qui centralisera les données. À noter que sur ce dernier, on ne pourra pas visualiser directement nos données car elles sont stockées d’une façon particulière.
Au fait, il faut installer git !
sudo apt install git
Pour initier le dépôt, il y a deux méthodes :
- La méthode propre
Où on créer un utilisateur git et on stocke les données dans/var/lib/git
- La méthode acceptable
Où on stocke les données dans un dossier git du homedir
Pour la méthode propre, cliquer sur la section ci-dessous :
Remarque
La méthode propre
On crée donc notre utilisateur :
sudo useradd --system --shell /bin/bash --comment 'git user' \
--user-group --home-dir /var/lib/git git
Copier ensuite votre clé publique dans le fichier /var/lib/git/.ssh/authorized_keys
.
Une fois positionné dans le dossier git on va créer un dossier pour notre premier dépôt. Il est d’usage de suffixé le nom par .git :
mkdir /var/lig/git/LesPokemons.git
git init --bare --shared /var/lig/git/LesPokemons.git
C’est tous pour la partie serveur !
Client
Côté client, nous avons deux cas à traiter :
- Depuis un dossier existant
Dans le cas où on veut versionner des fichiers existants - Depuis un dossier vide ou dépôt existant
Ce cas s’applique aussi si on veut récupérer des fichiers d’un dépôt existant sur son client
Dossier existant
On se positionne donc dans le dossier où sont les fichiers
que l’on veut pousser sur notre dépôt et on applique la commande git init
.
Vous remarquerez qu’un dossier .git a été créé dans ce répertoire.
On ajoute ensuite les fichiers que l’on veut “giter” avec git add 1-Bulbizarre.dat 4-Salameche.dat 7-Carapuce.dat
ou git add *
si on veut tout ajouter.
On va ensuite “commiter” ces fichiers avec la commande git commit
.
Cette commande ouvre alors votre éditeur de fichier et vous permet alors d’écrire un message
décrivant vos modifications.
Remarque
Exemple de message
Initial commit
À ce stade, rien n’est encore envoyé sur le serveur. Chose évidente vu qu’on a toujours pas dit au client où envoyer ces fichiers.
Pour cela, on utilise la commande git remote add qui dans mon exemple donne
git remote add origin git@192.168.92.17:/var/lig/git/LesPokemons.git
On peut alors poussé nos modifications sur le serveur avec un
git push origin master
.
TL;DR
git init
git add *
git commit -m 'Initial commit'
git remote add origin git@192.168.92.17:/var/lig/git/LesPokemons.git
git push origin master
Dossier vide ou dépôt existant
Le va alors cloner le dossier d’origine sur notre machine
avec la commande git clone <lien du git> <répertoire>
.
Si on ne précise pas de répertoire, cela va créer un dossier avec
le nom du dépôt.
git clone git@192.168.92.17:/var/lig/git/LesPokemons.git pokemon
git add *
git commit -m 'Initial commit'
git push origin master
Mise à jour
Maintenant que tout est initié, vous pouvez travailler sur vos fichiers.
Prenons mon cas d’exemple :
- J’ai édité le fichier
4-Salameche.dat
- J’ai ajouté le fichier
25-Pickachu.dat
Je vais donc effectuer la suite de commandes suivantes :
git status
git add 4-Salameche.dat
git commit -m "Update info for Salameche (new technique)"
git add 25-Pickachu.dat
git commit -m "Add new friend Pickachu !"
git push
Vous aurez compris par cet exemple que l’on peut faire plusieurs commit avant de pousser nos modifications sur le serveur.
Informations utiles
Voici quelques commandes supplémentaires :
git log
: historiquegit commit --amend
: modifier le message du dernier commitgit reset HEAD^
: revenir à l’avant-dernier commit (soit annuler le dernier)git reset --hard HEAD^
: restore aussi les fichiers modifiésgit checkout 4-Salameche.dat
: Reprend le fichier à la version du serveurgit revert
Si vous avez fait n’importe quoi et que vous souhaitez revenir sur la version actuellement sur le serveur :
git fetch origin
git reset --hard origin/master
git clean -f -d
La ligne de commande c’est bien pour comprendre mais ça devient vite
lourd si on fait tout le temps la même chose.
J’utilise l’utilitaire Fork pour cela
(il ressemble beaucoup à GitKraken)
en plus d’utiliser de plus en plus VSCode.
Conclusion
Ce tutoriel permet de faire ces premiers pas avec git.
Une fois que vous vous sentez à l’aise, essayer de vous documenter
sur les branches par exemple.
Je vous invite aussi à vous renseigner sur le fichier .gitignore
.
Bon versioning :wink: !