在日常开发中,版本的控制,处理新建分支,新增版本,还有版本的回退,也常常被使用,妙用版本的回退,会让你的工作更加得心应手。
版本的撤销分类:
- 撤销新增的工作区内容 > 数据回到 > 删除(因为还没有被git 标识)
- 撤销工作区的内容 > 数据回到 > 本地仓库的内容
- 撤销暂存区的内容 > 数据回到 > 工作区
- 撤销本地仓库的内容 > 数据回到 > 仓库历史记录的某一个版本内容
- 撤销远程仓库的内容 > 数据回到 > 远程历史仓库的某一个版本内容
PS:其中,这些撤销都支持部分撤销或者全部撤销
1 撤销工作区内容
应用场景
- 开发到中途,发现需求已经不需要做了,保留之前的业务
-
需要切换到别的分支进行开发,但是此工作区的业务代码已经没用了
PS:如果此工作区的代码还有用,就使用git stash 暂存此代码,而不是撤销了
1.1 如果是新增的工作区内容,还没有add被识别,则只能删除
rm [file1] [file2] ...
1.2 如果已经被git track,则可以通过git checkout 进行版本回归
> 整个版本回归:
先cd到该项目的根目录,然后:git checkout ./
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5iYjlDMkdjNjVTYmJmY5QjMlZTNjRTYkdjNxkTO4MGOj9CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
> 部分文件回归:file:可以是具体的文件,也可以文件夹
git checkout [file1] [file2] ....
2 撤销暂存区的内容
应用场景:
a. 需要提交代码到本地仓库的时候,发现提交多了,某些文件在当前版本不提交
b. 这次版本需要提交的代码很多,只有小部分不需要提交的,为了快速的提交,先git add ./ (全部提交到暂存区),然后再将不需要的撤回到工作区(此次提交不包括在内)
2.1 将部分代码撤回到工作区(文件不删除)
git reset --mixed [file1] [file2] ....
eg:工作区内,除了a.txt文件,其他全部提交
3 撤销本地仓库的内容
应用场景:
a. 某一天后的版本出现了问题或者不再需要了,我们需要还原到某个一版本的数据(慎用)
b. 还原到某一个基础版本,然后新建分支进行开发(常用)
核心命令:git reset
查看一下git reset的帮助文档,我们主要用到圈出来的三种,常用也是这三种
--mixed ,默认的参数,重置指针跟暂存区
-- soft ,只是重置指针
-- hard ,指针,暂存区,工作区全部重置
eg,当前的分支版本:
我强制回退到 1.1.0 的版本,进行强制提交覆盖远程master分支
git reset --hard 1d2f69agit push -f
PS:这个虽然是回退了,但是会1.1.0之后的分支去掉,除非确定是可以删除,否则不建议这样回退。通过记住日志的id,我们还可以回到任意分支
最佳的方法:我们新建一个分支,进行回退->提交