将 git 分支恢复到上次提交的安全方法?

safe way to revert git branch to last commit?

我已经签出到本地的一个分支机构,我提交了所做的更改并且我做了 git pull origin master 我的一个名为 app.scss 的文件中存在冲突,我开始解决冲突在这个文件中我错误地删除了我的更改我接受了传入的更改,那是错误的我需要我的更改

这是git日志

PS C:\makumba> git log 
commit d4c3dd49cba1931fce44aa8a7078842d0c1cece0 (HEAD -> features/Email_footer)
Author: <authorname>
Date:   Tue Jun 1 13:30:28 2021 +0200

    video footer
........

问题如何取回我的更改?我需要像下面这样恢复到最后一次提交吗?

git reset --hard HEAD

如果更改从未上演或提交,我认为您不会取回更改。接受传入的更改会将这些更改应用到您的工作副本,这是最易变的地方,意味着除非您的操作系统具有某种形式的恢复功能,或者您在开始之前制作了整个存储库和工作副本的副本,否则您就出局了运气不好,抱歉。

为了避免再次发生这种情况,我建议您掌握 git reset,正如您正确建议的那样,如果您还没有丢失工作副本更改(您也可以承诺在引入远程更改之前先创建一个分支):

  • git reset --soft [ref] 会将 HEAD 指向的分支更改为 [ref] 所在的分支。 [ref] 可能是 HEAD~1,这意味着“HEAD 之前的修订”。请注意,这会更改分支,而不仅仅是 HEAD 指针。因此,如果 HEAD 指向 MAIN,那么它将移动的是 MAIN,并且您将有悬空提交(您可以使用 git reflog 再次找到它们,只要您不进行太多更改或等待太久寻找他们)。
  • git reset --mixed [ref] 将与 git reset --soft 执行相同的操作,但 也会 更新索引以匹配(即,将单独保留您的工作副本和您的更改).
  • git reset --hard [ref]git reset --mixed 相同,但 也会 更新工作副本以匹配索引。这是危险的,因为您可能会丢失未暂存的、未提交的更改。

有关详细信息,请参阅 https://git-scm.com/book/en/v2/Git-Tools-Reset-Demystified。很抱歉您的损失。