git reset --hard xxx、git reset --soft 及git revert的区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git reset --hard xxx、git reset --soft 及git revert的区别相关的知识,希望对你有一定的参考价值。
参考技术A 彻底回退版本,连本地文件都会被回退到上个版本的内容本地文件和commit信息都回退了
本地文件还在,当commit信息已经回退
你也可以把git revert当作撤销已经提交的更改,而git reset HEAD用来撤销没有提交的更改。
git reset 之后的恢复
参考技术A 又没有提交本地的修改,然后使用 git reset —hard 改变了分支的内容。上一次是直接没有 git add ,导致修改的文件全部消失,这样即使是 git 也没有办法恢复,只能重新写一遍。这次好了一点点,使用了 git add ,但是还没有提交,查找了一番之后还是恢复了。记录这个过程,谨记慎重在开发用的机器上面使用 git reset —hard 。比如一个例子,提交的 commit 记录如下:
这时候使用了 git reset —hard ,提交记录变成如下:
没有远程仓库的情况下,如何才能恢复刚才丢失的 test 4 那条 commit 呢。可以使用 git reflog :
可以看到每一次的操作都被记录了起来。要恢复到 test 4 的那一次提交,只需要执行:
即可以恢复。
这个时候需要恢复可以执行以下步骤:
这里的 10q 指的就是你最近添加的 10 条 add 的记录,根据你丢失文件的多少进行选择。然后出现的信息如下:
objects 后面的部分就是一个 add 的ID,注意要去掉 / 符号。从上到下是最新的提交到旧的提交。执行:
会将 add 中的文件重新写到新文件中,进行恢复。
此外,还有一种方法进行恢复。执行:
然后去到 .git/lost-found 目录下面可以找到自己已经丢失的文件。文件不会是原来的名字,需要自己打开去查看和对比。
只能重写了。
以上是关于git reset --hard xxx、git reset --soft 及git revert的区别的主要内容,如果未能解决你的问题,请参考以下文章