文章目录
git的版本回退
git的强大之处在于版本的回退,git reset能按需将工作区、暂存区、版本库进行回退.
git reset 的使用
| 三种指令 | 工作区(文件) | 暂存区(add) | 版本库(commit) | 一句话解释 |
|---|---|---|---|---|
--soft |
❌ 不变 | ❌ 不变 | ✅ 回退 | 只撤销 commit,保留所有更改 |
--mixed(默认) |
❌ 不变 | ✅ 重置 | ✅ 回退 | 撤销 commit 和 add |
--hard |
✅ 重置 | ✅ 重置 | ✅ 回退 | 三个区域完全回到指定版本 |
当修改文件并且 git add 添加到暂存区之后,想要 取消 add (重置暂存区) 有两种方式:
git reset是git reset --mixed HEAD的默认写法,只退回暂存区到上次commit的内容git restore --staged [文件]取消上一次的add文件
其中: HEAD代表的是当前最新的版本库,如果想要上一次的版本库,HEAD^代表的是上一次的版本库
也就是说git reset --soft HEAD^可以取消最新的commit ,但是不将工作区和暂存区的内容退回上一次,以此类推选择恰当的三种退回功能;
指定版本的回退
当然,可以查找之前的版本号,来进行指定版本的回退
通过git log命令 查看提交的记录以及git 的版本号

然后就可以将 HEAD 替换到指定的版本号进行版本回退
比如:
git reset --mixed 26b26aa2243419e02d02029825d8450af196c258
回退工作区
git checkout -- README.md 将工作区的内容撤销回上一次add时
如果在一次add 之后,继续在工作区写了代码,但是代码写的不理想,就可以
将上一次放在暂存区的内容覆盖掉工作区.