微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我已签出本地分支之一,我提交了所做的更改,并执行了 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。很抱歉您的损失。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。