Récupérer un stash droppé par erreur

Vous venez de drop un stash important, et de rage vous avez fermé votre terminal ?

Pas de panique, j’ai la suite de commandes qu’il vous faut !

Les étapes

Mais avant de vous donner la suite complète, je vais vous présenter les différentes commandes qui la composent.

1ère étape, retrouver les objets orphelins

Git est une base de données, qui contient différents objets (commit, branche, stash…), qui sont reliés entre eux. Mais quand on droppe un stash, revert un commit…, ces objets ne disparaissent pas tous de suite. Ils sont juste déconnectés du reste, et deviennent injoignables (unreachable, dans la langue de Guillaume Secoue-Poire).

Pour retrouver ces objets, la commande à utiliser est :

git fsck --unreachable
Continuer la lecture

Quelques commandes git que j’utilise (presque) au quotidien

Aujourd’hui, j’ai décidé de parler d’un outil que j’utilise au quotidien dans ma vie professionnelle, le système de gestion de version git.

Avec cet outil j’utilise certaines commandes très utiles. Mais je n’avais pas d’idée de comment contextualiser ces commandes pour vous en parler. Cet alors que je me suis souvenu d’un projet grace auquel j’avais pu un peu monter en compétence : gitstery.

Ce dépot est disponible à cette adresse : https://github.com/nivbend/gitstery.

Le fichier README du projet, visible sur la racine du projet présente déjà deux commandes git.

La première, est la commande de base si vous voulez récupérer un projet sur votre machine, git clone.

Cette commande, sous sa forme la plus basique, se présente comme ceci : git clone <url_du_projet>. Par défaut, le contenu sera placé dans un dossier portant comme nom la dernière partie de l’URL dans notre cas gitstery.

git clone https://github.com/nivbend/gitstery

Après s’être déplacé dans ce nouveau dossier, il faut lire le contenu du fichier instructions.txt présent dans ce dossier. Pour cela, on pourrait utiliser la commande Unix de base cat. Mais, comme indiqué dans le README, git dispose de sa propre commande : git cat-file.

Cette commande se décompose comme suit : git cat-file <type_objet> <hash>:chemin/vers/objet.

Dans notre cas, ce que nous voulons, c’est le contenu du fichier instructions.txt, à l’endroit où nous nous trouvons (HEAD).

git cat-file blob HEAD:instructions.txt

Comme indiqué à la fin de ce fichier, je vais par la suite vous présenter des commandes permettant de faire notre enquête sans quitter la branche actuelle (avec la commande git checkout).

Continuer la lecture