git восстановление локальных незафиксированных изменений - PullRequest
1 голос
/ 28 февраля 2020

Полагаю, я что-то напутал с git, хотя я не понимаю, что именно произошло :) Итак, изначально, находясь не в каталоге data (думал, что я был root в проекте, это моя история команд:

 git add .
 git commit -m "v0.2.1"
 git push origin master
 git add .
 git commit -m "v0.2.1"
 git rm -r data
 git rm  data
 git rm data/file.txt
 git rm 
 git rm .
 git rm . -r
 cd ../
 git rm -r data
 git rm -r data/
 git rm -r .data
 git rm -r ./data
 git add .
 git commit -m "v0.2.1"
 git push origin master
 git reset --hard HEAD~1
 git push --force

Я просто хотел зафиксировать изменения и затем забыть удалить каталог data из этих изменений. В конце большая часть работы в главном каталоге проекта была потеряна - файлы возвращаются в состояние, в котором они находились при предыдущем коммите (с тех пор было сделано довольно много). Я думаю, это произошло из-за git reset --hard HEAD~1, который, вероятно, был совет из журнала ошибок, так как были некоторые проблемы. торопился, и это результат.

В любом случае я могу восстановить несколько локальных файлов в состояние до того, как это произошло? пробные решения отсюда Как вернуть "git rm -r."? но ничего не помогает.

1 Ответ

1 голос
/ 28 февраля 2020

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

Шаги:

1. Найдите исходный коммит

Go до git reflog и найдите исходный коммит: "v0.2.1". Я бы порекомендовал вам либо использовать тег git, либо вы дадите коммитам разные сообщения, чтобы можно было легко отслеживать.

2. Восстановите этот коммит

Как только вы его найдете, используйте sha для восстановления всего:

SHA-of-the-commit-you-want-to-restore (HEAD -> master) HEAD@{1234}: commit: v0.2.1 - the commit before everything was screwed up.

git reset --hard SHA-of-the-commit-you-want-to-restore

И все должно вернуться в нормальное состояние!

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