fr en fr en en fr fr fr fr en fr fr en fr en fr fr fr fr en fr fr fr fr fr fr fr fr fr en fr fr en tr fr fr fr fr fr fr fr fr en hbs_lat fr fr en en fr en fr fr fr fr fr fr fr fr fr fr fr en fr fr fr hsb fr tr fr fr fr fr en fr fr fr fr fr fr fr tr fr fr fr fr fr fr fr fr tr fr fr ms fr fr fr en fr fr fr fr fr tr fr fr en fr
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 :
Visualisation de l’historique avec Fork
On va donc voir ici comment mettre en place se système.
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.
Pour initier le dépôt, il y a deux méthodes :
Où on stocke les données dans un dossier git du homedir
Pour la méthode propre, cliquer sur la section ci-dessous :
On créer 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 !
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
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.
À 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.
1 2 3 4 5
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    .
Si on ne précise pas de répertoire, cela va créer un dossier avec le nom du dépôt.
1 2 3 4
git clone git@192.168.92.17:/var/lig/git/LesPokemons.git pokemon git add * git commit -m 'Initial commit' git push origin master
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 :
1 2 3 4 5 6
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.
Voici quelques commandes supplémentaires :
git log : historique
git commit --amend : modifier le message du dernier commit
git reset HEAD^ : revenir à l’avant-dernier commit (soit annuler le dernier)
git reset --hard HEAD^ : restore aussi les fichiers modifiés
git checkout 4-Salameche.dat : Reprend le fichier à la version du serveur
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.