Impossible de «git stash pop» en raison d'un conflit

19

J'ai un dépôt git local et j'ai eu plusieurs fichiers modifiés. Ensuite, je devais produire rapidement un correctif pour quelque chose, donc je

  • caché mes changements (git stash)
  • fichier édité (fichier vi)
  • commis (git commit)
  • caché sauté (git stash pop)

Cela a entraîné un conflit.

# On branch master
$ git stash pop
Auto-merging page/search.php
CONFLICT (content): Merge conflict in page/search.php
$ git status
# On branch master
# Unmerged paths:
#   (use "git reset HEAD <file>..." to unstage)
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#   both modified:      page/search.php

Si j'essaie de nettoyer les modifications et de réappliquer la cachette, la même chose se produit (conflit). Je ne me soucie pas beaucoup de la page / search.php, mais je voudrais extraire d'autres fichiers de la cachette.

Existe-t-il un moyen de convertir les données cachées en correctifs ou simplement de récupérer les fichiers tels qu'ils étaient lorsqu'ils étaient cachés?

romaninsh
la source

Réponses:

20

Le stash a déjà été appliqué à d'autres fichiers; c'est seulement page/search.phpque vous devez fusionner manuellement. Ensuite, exécutez simplement git resetpour annuler les modifications et continuer à pirater - ou git add ...et validez.

user1686
la source
Oui. Exactement. Après avoir récupéré le patch avec -p, j'ai découvert que d'autres fichiers étaient déjà mis à jour.
romaninsh
3
très gentil, git stash poprésolvez vos conflits puis git add xensuite git resetpour le sortir de la mise en scène, merci!
Quang
@Quang Il devrait y avoir un stash pop --continuealias vers lequel reset. :)
Kaz
12

Résolu avec:

git stash show -p
romaninsh
la source
Cela m'a sauvé la journée, =)
anatoly techtonik
Fait -pquelque chose ici?
Joost
2
montrer? -p? qu'est-ce que cela fait? comment «montrer» pourrait être lié à la résolution des conflits?
Arnold Roa
2
Cette commande affiche les modifications apportées dans la cachette, vous permettant de fusionner manuellement
Desmond Weindorf
1
J'ai trouvé git stash show -p | git apply && git stash dropsur coderwall.com/p/anxp0g/force-a-git-stash-pop , et j'essaie de vérifier que cela fonctionnera avant de l'exécuter. :-)
PatS
7

Après la git stash popcommande, vous devez ensuite résoudre le conflit à la main puis faire git stash dropmanuellement comme le man git-stashsuggère.

westoque
la source