Git Stash « already exists, no checkout »

Bonjour le web,

J’ai eu un soucis avec git stash :

src/[...]/Form/PretType.php  already exists, no checkout
Could not restore untracked files from stash

Voici la procédure que j’ai appliqué à partir de ce StackOverflow.

Tous d’abord commençons par la commande git log --graph --all --decorate --oneline qui doit produire une sortie similaire à :

* ea60368 (HEAD, master) Correction vue fiche SAV
|
| *-.   5851b46 (refs/stash) WIP on master: 6b106ff Correction config
| |\ \ 
|/ / / 
| | * b78a5fd untracked files on master: 6b106ff Correction config
| * 044e6c8 index on master: 6b106ff Correction config
|/ 
* 6b106ff Correction config

On peux voir notre stash en ligne 3 (la ligne 6 pour les fichiers suivis par git et la 7 pour les fichiers non suivis). Nous allons désormais créer une branche temporaire et faire nos modifications dessus :

git checkout -b recup stash^
rm src/[...]/Form/PretType.php
git commit -a
git stash apply --index

Désormais un git status devrait afficher quelque chose comme :

Sur la branche recup
Modifications qui seront validées :
  (utilisez "git reset HEAD <fichier>..." pour désindexer)

        modifié:         src/[...]/Controller/PretController.php
        modifié:         src/[...]/Entity/Pret.php
        modifié:         src/[...]/Resources/config/routing/pret.yml
        modifié:         src/[...]/Resources/config/services.yml
        modifié:         src/[...]/Resources/views/Pret/create.html.twig
        modifié:         src/[...]/Resources/views/Pret/delete.html.twig
        modifié:         src/[...]/Resources/views/Pret/edit.html.twig
        modifié:         src/[...]/Resources/views/Pret/list.html.twig
        modifié:         src/[...]/Resources/views/Pret/view.html.twig

Chemins non fusionnés :
  (utilisez "git reset HEAD <fichier>..." pour désindexer)
  (utilisez "git add/rm <fichier>..." si nécessaire pour marquer comme résolu)

        supprimé par nous :src/[...]/Form/PretType.php

Fichiers non suivis:
  (utilisez "git add <fichier>..." pour inclure dans ce qui sera validé)

        app/DoctrineMigrations/Version20150720145833.php
        src/[...]/Resources/views/Pret/layout.html.twig
        src/[...]/Resources/views/Pret/print.html.twig

On ajoute le fichier problématique avec git add src/[...]/Form/PretType.php ou avec git add . si vous avez plusieurs fichiers a enregistrer (comme mon cas) puis on commit avec git commit. Avec git log --graph --all --decorate --oneline, on retrouve nos deux commit (lignes 1 et 2) effectué plus haut :

* 388a387 (recup) Ajout des prêt + diverse correction
* c4c4ee8 Correct git stash
| * ea60368 (HEAD, master) Correction vue fiche SAV
|/
| *-.   5851b46 (refs/stash) WIP on master: 6b106ff Correction config
| |\ \
|/ / /
| | * b78a5fd untracked files on master: 6b106ff Correction config
| * 044e6c8 index on master: 6b106ff Correction config
|/
* 6b106ff Correction config

Nous allons ensuite fusionner notre branche master avec notre branche de récupération :

git checkout master
git merge recup --squash

La sortie devrais être la suivante :

Validation compressée -- HEAD non mise à jour
La fusion automatique a réussi ; stoppée avant la validation comme demandé

Enfin, on commit les modifications fusionnées (à l’aide du --squash avec git commit -a. On supprime notre branche de récupération (git branch -D recup) ainsi que notre stash (git stash drop) et on effectue un git log --graph --all --decorate --oneline et TADAAA :

* 2df2b96 (HEAD, master) Ajout des prêt + diverse correction
* ea60368 Correction vue fiche SAV
* 6b106ff Correction config
* 202e49b (origin/master) Correct config

Tous va bien sur notre branche master et vous avez réussi à enregistré votre fichier dans ce capricieux .

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.