1.如果你只是编辑了工作区 未执行git add 你执行git checkout -- file 即可
2.如果你执行了git add
使用 git reset HEAD file
恢复到 编辑后的状态
3.如果已经执行了git commit,使用 git reset --hard commit_id
或者直接 git reset (--hard) HEAD^ 回退到上一个版本
首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD
表示当前版本,也就是最新的提交的版本,上一个版本就是HEAD,上上一个版本就是HEAD,当然往上100个版本写100个比较容易数不过来,所以写成HEAD~100
可以 先通过git log
查看 commid_id
git log --pretty=oneline
57a138bd7d30179599d3de1a4a8a570776df79cf test
79711014976de6ea139b8025c3a7c48564ba5d8b test
506b6c51d837fc0f5fc52a5eb81b195d188d06af test
96bfb76b45603e779cc27dd551e209932bede06a liss
查看一下 当前的commit id
比如我想回退到 79711014976de6ea139b8025c3a7c48564ba5d8b
那么 执行
git reset --hard 79711014976de6ea139b8025c3a7c48564ba5d8b
HEAD is now at 7971101 test
现在我们再执行
git log --pretty=oneline
79711014976de6ea139b8025c3a7c48564ba5d8b test
506b6c51d837fc0f5fc52a5eb81b195d188d06af test
96bfb76b45603e779cc27dd551e209932bede06a liss
现在已经回退到 指定版本了
如果现在你又后悔回退了 想回到未回退的版本,那git log 找不到我的commit_id了肿么办?哈哈 最简单的方法就是你的屏幕滚动一下之前的界面还存在哦 我们再执行git reset --hard commit就可以了
但是如果反反复复 找不到了怎么办呢?
Git提供了一个命令git reflog,用来记录你的每一次命令
bogon:lishuangshuang MOMO$ git reflog
96bfb76 HEAD@{0}: reset: moving to 96bfb76b
506b6c5 HEAD@{1}: reset: moving to HEAD^
b51a33f HEAD@{2}: commit: 添加ooo
506b6c5 HEAD@{3}: reset: moving to HEAD^
现在放心了吧 git实现了吃后悔药的梦想哦
版本号没必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了。可以 git reset --hard 7971101