Não foi possível "git stash pop" devido a conflito

19

Eu tenho um repositório git local e tinha vários arquivos modificados. Então eu precisava produzir rapidamente uma correção para algo, então eu

  • escondeu minhas alterações (git stash)
  • arquivo editado (arquivo vi)
  • comprometido (git commit)
  • stash estalado (git stash pop)

Isso resultou em conflito.

# 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 eu tentar limpar as alterações e reaplicar o stash, acontece o mesmo (conflito). Eu não me importo muito com a página / search.php, mas gostaria de obter outros arquivos do stash.

Existe uma maneira de converter stash em um patch ou simplesmente obter os arquivos como estavam quando estavam escondidos?

romaninsh
fonte

Respostas:

20

O stash já foi aplicado a outros arquivos; é só page/search.phpque você precisa mesclar manualmente. Depois, basta correr git resetpara desestabilizar as alterações e continuar a hackear - ou git add ...e confirmar.

user1686
fonte
Sim. Exatamente. Depois de recuperar o patch com -p, descobri que outros arquivos já estão atualizados.
romaninsh
3
muito bom, git stash pop, resolver seus conflitos, em seguida, git add xem seguida, git resetpara tirá-lo do estadiamento, Thanks!
Quang
@ Quang Deve haver um apelido stash pop --continuepara reset. :)
Kaz
12

Resolvido com:

git stash show -p
romaninsh
fonte
Isso salvou o meu dia, =)
anatoly techtonik
Faz -palguma coisa aqui?
Joost
2
mostrar? -p? o que isso faz? como "show" pode estar relacionado para resolver conflitos?
Arnold Roa
2
Este comando mostra as alterações feitas no stash, permitindo que você mescle manualmente
Desmond Weindorf 17/18
1
Encontrei git stash show -p | git apply && git stash dropem coderwall.com/p/anxp0g/force-a-git-stash-pop e estou tentando verificar se funcionará antes de executá-lo. :-)
PatS 01/08/19
7

Após o git stash popcomando, você deverá resolver o conflito manualmente e git stash dropmanualmente, conforme man git-stashsugerido.

westoque
fonte