Git Récupérer une cachette tombée


Exemple

Si vous venez juste de l'ouvrir et que le terminal est toujours ouvert, vous aurez toujours la valeur de hachage imprimée par git stash pop à l'écran:

$ git stash pop
[...]
Dropped refs/stash@{0} (2ca03e22256be97f9e40f08e6d6773c7d41dbfd1)

(Notez que la chute de git produit également la même ligne.)

Sinon, vous pouvez le trouver en utilisant ceci:

git fsck --no-reflog | awk '/dangling commit/ {print $3}'

Cela vous montrera tous les commits sur les bouts de votre graphe de commit qui ne sont plus référencés depuis une branche ou une balise - chaque commit perdu, y compris chaque commit de cache que vous avez déjà créé, sera quelque part dans ce graphique.

La manière la plus simple de trouver l’engagement que vous souhaitez est probablement de passer cette liste à gitk :

gitk --all $( git fsck --no-reflog | awk '/dangling commit/ {print $3}' )

Cela lancera un navigateur de référentiel vous montrant chaque engagement unique dans le référentiel , qu'il soit accessible ou non.

Vous pouvez remplacer gitk par quelque chose comme git log --graph --oneline --decorate si vous préférez un graphique agréable sur la console par rapport à une application GUI séparée.

Pour repérer les commits cachés, recherchez les messages de validation de ce formulaire:

WIP sur somebranch : commithash Un ancien message de commit

Une fois que vous connaissez le hachage de la validation souhaitée, vous pouvez l’appliquer comme une réserve:

git stash apply $stash_hash

Ou vous pouvez utiliser le menu contextuel de gitk pour créer des branches pour tous les commits inaccessibles qui vous intéressent. Après cela, vous pouvez faire ce que vous voulez avec tous les outils habituels. Lorsque vous avez terminé, il suffit de faire sauter ces branches à nouveau.