Отказаться от Git Stash Pop

133

Я сделал git stash pop, и теперь у меня куча конфликтов. Я зафиксировал весь свой последний код до git stash pop, поэтому есть ли способ вернуться к последней фиксации и избавиться от всех конфликтов и закодировать git stash popвведенный код ?

jdog
источник
Вы все еще хотите сохранить всплывающую работу или больше не хотите ее видеть?
jscs
1
Нет, я не хочу работать с Popped. Я сделал тайник, как 4 месяца назад, и не уверен, что там вообще?
jdog
2
Вы заботитесь о вещах, которые не были зафиксированы до того, как спрятать?
Эндрю Маршалл
Те, что 4 месяца назад или те, что сегодня? Я хочу то, что имел час назад.
jdog
5
Если при этом git stashвозникнут конфликты, git не удалит тайник из списка. Так git reset --hard HEADчто не разрушает выскочившую работу.
jwadsack

Ответы:

189

Об этом уже спрашивали и ответили на stackoverflow (см. Как вернуть репозиторий Git к предыдущей фиксации? ), Но простой ответ:

git reset --hard HEAD

Это должно решить вашу проблему. Обратите внимание, что это удаляет все незафиксированные изменения из репозитория.

Обратите внимание, что в случае конфликтов тайник сохраняется. Из документов тайника :

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

MichaelMilom
источник
1
Это вернет ваше локальное репо к последней фиксации. Вы должны иметь возможность без проблем отправлять все свои коммиты (с момента последнего нажатия). Если не работает, опубликуйте результаты обратно к своему предыдущему вопросу). Удачи.
MichaelMilom
28
Но это приведет к потере вашего тайника
К. Вебер,
19
@ K.Weber, если это git stash popприведет к конфликту, тайник не будет удален из списка тайников.
Daiwei
1
Я не уверен, кто голосует за «на самом деле ты не потеряешь свой кошелек», я только что потерял свой
Энтони
4
Не так много имхо решение, так как оно указывает на то , что вы будете терять неподтвержденными изменения.
Иван П
4

Сброс также может быть вызван для определенных файлов:

git reset HEAD <filename>...

Однако вы не можете выполнить полный сброс файла. Но вы можете отменить изменения после оформления заказа:

git checkout -- <filename>...

Ваш тайник будет сохранен, как указал Люк в ответе MichaelMilom.

Это полезно, если вы не хотите потерять незафиксированные локальные изменения.

Poppolopoppo
источник
0

Если вы больше не хотите видеть работу в открывшемся тайнике, это так же просто, как полный сброс:

git reset --hard HEAD

Это говорит git игнорировать тот факт, что у вас есть незафиксированные изменения в вашем рабочем каталоге, и устанавливает рабочий каталог, промежуточную область и заголовок на указанную вами фиксацию - в данном случае существующий HEAD, который содержит всю вашу работу. только что совершил.

ОНК
источник