Я хочу сохранить свою работу, когда я сообщу об ошибке, и смогу вернуться к своей предыдущей фиксации.Как мне подойти к этому с мерзавцем? - PullRequest
2 голосов
/ 29 сентября 2019

Мой журнал выглядит примерно так с последними 2 коммитами:

commit ABC
TEMP

commit DEF

Working!

Что-то, что я сделал после DEF, сломал мой код.Я не хотел терять изменения, поэтому я сделал коммит с именем TEMP.Затем я сделал git checkout DEF -f, затем git status сказал мне HEAD detached at DEF.Когда я делаю команду log, я не вижу свой коммит TEMP.

Что я хотел бы сделать, это использовать git restore (или другую команду), чтобы получить каждый измененный файл из ABC, одинпо одному, пока я не найду файл виновника.Затем я хотел бы удалить или «раздеть» ABC.Я пришел из Mercurial, где вы можете удалить коммиты.Я не подталкивал к своему удаленному репо, потому что я не хочу, чтобы коммит TEMP/ABC выполнял удаленное репо.

Я понимаю, что, вероятно, я делаю это «неправильно», так какЯ справляюсь с ситуацией, когда что-то напутал, и я хочу вернуться к предыдущему коммиту, но сохранить свои изменения, чтобы я мог получить их файл за файлом?Я предполагаю, что есть лучший способ, чем создать TEMP коммит, как я сделал.

1 Ответ

2 голосов
/ 29 сентября 2019

Так как вы не нажали, вы можете (при условии, что у вас нет работы)

То есть:

git switch master
git reset --hard DEF
git diff-tree --no-commit-id --name-only -r ABC
git restore -s ABC -SW -- afile

Используется новый Git 2.23 (август 2019 г.) git restore команда .
И новая git switch команда .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...