Nie można „git stash pop” z powodu konfliktu

19

Mam lokalne repozytorium git i miałem kilka zmodyfikowanych plików. Potem musiałem szybko naprawić coś, więc ja

  • ukrył moje zmiany (git stash)
  • plik edytowany (plik vi)
  • popełniony (git commit)
  • popped stash (git stash pop)

Doprowadziło to do konfliktu.

# 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

Jeśli spróbuję wyczyścić zmiany i ponownie zastosować skrytkę, stanie się to samo (konflikt). Nie dbam o stronę / search.php, ale chciałbym wyciągnąć inne pliki ze skrytki.

Czy istnieje sposób na przekonwertowanie skrytki na łatkę lub po prostu pobranie plików w stanie, w jakim były ukryte?

romaninsh
źródło

Odpowiedzi:

20

Skrytka została już zastosowana do innych plików; trzeba tylko page/search.phpscalić ręcznie. Następnie po prostu biegnij, git resetaby wycofać zmiany i dalej hakować - lub git add ...zatwierdzić.

użytkownik1686
źródło
Tak. Dokładnie. Po odzyskaniu łatki za pomocą opcji -p dowiedziałem się, że inne pliki są już zaktualizowane.
romaninsh
3
bardzo miło, git stash poprozwiążcie swoje konflikty, a git add xnastępnie git resetwyjdźcie z inscenizacji, dzięki!
Quang
@Quang Powinien istnieć alias stash pop --continuedo reset. :)
Kaz
12

Rozwiązany z:

git stash show -p
romaninsh
źródło
To uratowało mi dzień, =)
anatolij techtonik
Czy -pcoś tu robi?
Joost
2
pokazać? -p? co to robi w jaki sposób „show” może być powiązane z rozwiązywaniem konfliktów?
Arnold Roa
2
To polecenie pokazuje zmiany wprowadzone w skrytce, umożliwiając ręczne scalenie
Desmond Weindorf
1
Znalazłem git stash show -p | git apply && git stash dropz coderwall.com/p/anxp0g/force-a-git-stash-pop i próbuję sprawdzić, czy będzie działać, zanim go uruchomię. :-)
PatS
7

Po git stash popwydaniu polecenia należy git stash dropręcznie rozwiązać konflikt, a następnie wykonać ręcznie, jak man git-stashsugeruje.

zachodni
źródło