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


133

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


Вы все еще хотите сохранить всплывающую работу или больше не хотите ее видеть?
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впоследствии позвонить вручную.


1
Это вернет ваше локальное репо к последней фиксации. Вы должны иметь возможность без проблем отправлять все свои коммиты (с момента последнего нажатия). Если не работает, опубликуйте результаты обратно к своему предыдущему вопросу). Удачи.
MichaelMilom

28
Но это приведет к потере вашего тайника
К. Вебер,

19
@ K.Weber, если это git stash popприведет к конфликту, тайник не будет удален из списка тайников.
Daiwei

1
Я не уверен, кто голосует за «на самом деле ты не потеряешь свой кошелек», я только что потерял свой
Энтони

4
Не так много имхо решение, так как оно указывает на то , что вы будете терять неподтвержденными изменения.
Иван П

4

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

git reset HEAD <filename>...

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

git checkout -- <filename>...

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

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


0

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

git reset --hard HEAD

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.