Отменить извлечение git из master, привести репозиторий в состояние с локальными изменениями

#git #github #merge #version-control

#git #github #объединить #контроль версий

Вопрос:

У меня есть репозиторий git, в который я вношу свои изменения, с несколькими фиксациями, которые еще не объединены.

У меня есть несколько локальных изменений, которые не зафиксированы, но я добавил файлы в git.

Я хотел получить изменения от master, что я и сделал

 git stash
git pull
git stash pop
  

Теперь я понял, что мне не нужно было выполнять это извлечение, и мне нужно отменить извлечение из master, чтобы перейти в состояние, в котором в моем локальном хранилище будут только мои зафиксированные / незафиксированные изменения.

Вот как выглядит мой git reflog :

 git reflog
565eb (HEAD -> mainline) HEAD@{0}: reset: moving to HEAD
565eb (HEAD -> mainline) HEAD@{1}: commit: <commit msg>
71edb HEAD@{2}: commit: <commit msg>
909ba HEAD@{3}: commit: <commit msg>
.
.
.
  

Я читаю git reset —hard как вариант, но не уверен, потеряю ли я свои незафиксированные изменения ИЛИ я могу сначала зафиксировать, а затем выполнить сброс?

Ответ №1:

git reset --hard удалит ваши незафиксированные изменения.

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

Затем в git reset --hard , чтобы вернуться к нужной ревизии.

А затем используйте git stash pop , чтобы вернуть ваши незафиксированные изменения обратно.

Если вы хотите быть уверены, что ничего не потеряете, вы можете сделать резервную копию своей папки перед любыми изменениями, чтобы у вас было сохраненное состояние и вы могли свободно экспериментировать.