Impossibile "git stash pop" a causa di un conflitto


19

Ho un repository git locale e ho avuto diversi file modificati. Quindi avevo bisogno di produrre rapidamente una correzione per qualcosa così anch'io

  • nascosto le mie modifiche (git stash)
  • file modificato (file vi)
  • commit (git commit)
  • popped stash (git stash pop)

Ciò ha provocato conflitti.

# 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

Se provo a ripulire le modifiche e a riapplicare lo stash, succede la stessa cosa (conflitto). Non mi interessa molto la pagina / search.php, ma vorrei estrarre altri file dalla scorta.

C'è un modo per convertire lo stash in una patch o semplicemente ottenere i file come erano quando sono stash?

Risposte:


20

Lo stash è già stato applicato ad altri file; è solo page/search.phpche devi unire manualmente. Successivamente corri solo git resetper mettere in scena le modifiche e continuare a hackerare o git add ...impegnarti.


Sì. Esattamente. Dopo aver recuperato la patch con -p, ho scoperto che altri file sono già stati aggiornati.
romaninsh,

3
molto bello, git stash pop, risolvere i vostri conflitti quindi git add xpoi git resetper farlo fuori della messa in scena, grazie!
Quang,

@Quang Dovrebbe esserci un stash pop --continuealias per reset. :)
Kaz,

12

Risolto con:

git stash show -p

Ciò mi ha salvato la giornata, =)
anatoly techtonik,

Fa -pqualcosa qui?
Joost

2
mostrare? -p? cosa fa questo? come "show" potrebbe essere correlato per risolvere i conflitti?
Arnold Roa,

2
Questo comando mostra le modifiche apportate allo stash, consentendo di unire manualmente
Desmond Weindorf,

1
Ho trovato git stash show -p | git apply && git stash dropda coderwall.com/p/anxp0g/force-a-git-stash-pop e sto provando a verificare che funzionerà prima di eseguirlo. :-)
PatS

7

Dopo il git stash popcomando, è quindi necessario risolvere git stash dropmanualmente il conflitto, quindi eseguire manualmente come man git-stashsuggerisce.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.