繁体   English   中英

将 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

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

为避免再次发生这种情况,我建议您掌握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 对不起你的损失。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM