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?

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.


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

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.