Git stash pop на главной ветке

У меня две ветки master и development. Я спрятал на мастере, например.

git stash
git checkout development

Теперь я был на ветке разработки, но по ошибке вытащил тайник

git stash pop

И теперь он показывает конфликты. Я сбросил git, используя это:

git reset HEAD

Но он все еще показывает конфликты. Мне также нужен мой тайник в основной ветке. Как я могу решить эту проблему?


person Rohit    schedule 15.06.2015    source источник
comment
возможный дубликат отмены случайного всплывающего окна git stash   -  person Jörn Hees    schedule 15.06.2015


Ответы (2)


git reset HEAD не будет касаться рабочего дерева, только индекс. По сути, он просто удалит промежуточные файлы, потому что HEAD — это то место, где ваша текущая ветка уже находится в любом случае (это определение HEAD).

git reset --hard HEAD исправит рабочее дерево, чтобы оно отражало HEAD.

Если git pop не применяется чисто, тайник нужно было сохранить.

От человека git-stash:

Применение состояния может привести к конфликтам; в этом случае он не удаляется из списка тайников. Вам нужно разрешить конфликты вручную, а затем вызвать git stash drop вручную.

Так что просто сделайте:

git checkout master
git stash pop 
#or `git stash apply` if you don't want to drop the stash even if it does apply cleanly
person PSkocik    schedule 15.06.2015
comment
есть ли способ получить потерянный тайник - person Rohit; 15.06.2015
comment
Если у вас возникли конфликты, заначка должна была быть сохранена, т.е. не должна быть утеряна. - person PSkocik; 15.06.2015
comment
Если его нет, вы сможете найти его в reflog. - person Kristján; 15.06.2015
comment
Вы можете использовать «git stash list», чтобы увидеть, есть ли спрятанные изменения. - person Ondrej Burkert; 15.06.2015

Попробуйте поискать в руководстве по git stash, используя:

git stash --help

В нем есть раздел о том, что делать в случае, если вы случайно очистили/выбросили тайники. Это поможет понять, что нужно делать в таком случае.

Recovering stashes that were cleared/dropped erroneously
   If you mistakenly drop or clear stashes, they cannot be recovered through the normal safety mechanisms. However, you can try the
   following incantation to get a list of stashes that are still in your repository, but not reachable any more:

       git fsck --unreachable |
       grep commit | cut -d\  -f3 |
       xargs git log --merges --no-walk --grep=WIP
person Rahul Gupta    schedule 15.06.2015