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?

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ć.


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

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.