Git必知必会基础(14):撤销操作(含reset)
本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/10854115.html
应用场景
操作git过程中,难免误操作,误操作可能导致之前的工作白费,
此时我们可以通过撤销操作来挽救,本篇分享常用的撤销操作。
建议还是使用git过程中想清楚再操作,尽量避免误操作。
数据准备
说明:
下面对file的操作,都可以用通配符
git add <file>...
比如:git add *.txt
git restore <file>...
比如:git restore --staged *.txt
修改文件(已提交过,文件已在本地仓库中)
撤销:对工作区修改
修改文件内容,可以看到master -> origin的颜色变了
此时文件在工作区,根据上图提示,撤销修改:git restore qzcsbj.txt
撤销add:工作区 -> 暂存区
准备数据
git restore --staged qzcsbj.txt
撤销commit:重新commit
准备数据
和上面对比发现,ebc6ec1这次比较被删除了
撤销commit:本地仓库
回到上一次版本,保留工作区和暂存区
git reset --soft f198af0
可以看下面新增文件的示例
新增文件(未提交过,文件不在本地仓库中)
撤销:对工作区修改
工作区新增test.txt文件
直接删除文件:rm test.txt
撤销add:工作区 -> 暂存区
准备数据
git restore --staged qzcsbj.txt
撤销commit:重新commit
git commit -m "add test.txt"
删除上一次提交,重新提交,比如:修改-m的内容(也就是修改提交日志),git commit --amend -m "add file test.txt"
撤销commit:本地仓库
回到上一次版本,保留工作区和暂存区
git reset --soft 477cdb7
关于撤销提交(也就是分支重置)
撤销上一次提交,回退到Untracked(工作区),这会把 HEAD 指针移回上一个提交(HEAD~1),并清除最后一次提交的内容
git reset HEAD~1
撤回两次或者n次
git reset HEAD~2
回到指定commit的状态
git reset --hard <commit_SHA-1>
git reset --soft:工作区和暂存区的内容不会改变,git reset --soft 477cdb7
git reset --mixed (默认选项):将HEAD指向指定的提交,暂存区的内容随之改变,工作区内容不变
git reset --hard,将HEAD指向指定的提交,暂存区跟工作区都会改变
git reset --hard HEAD,回退到最近一次提交
分支重置:git fetch --all && git reset --hard origin/master
参数
--mixed 不删除工作空间改动代码,撤销 commit,并撤销 git add . 操作 git reset --mixed HEAD^ 效果等同 git reset HEAD^ --soft 不删除工作空间改动代码,撤销commit,不撤销git add . --hard 删除工作空间改动代码,撤销commit,撤销git add . --amend 修改提交日志,进入vim编辑器,改完:wq即可,新版本直接-m指定新的提交日志
__EOF__
关于博主:擅长性能、全链路、自动化、企业级自动化持续集成(DevTestOps)、测开等
面试必备:项目实战(性能、自动化)、简历笔试,https://www.cnblogs.com/uncleyong/p/15777706.html
测试提升:从测试小白到高级测试修炼之路,https://www.cnblogs.com/uncleyong/p/10530261.html
欢迎分享:如果您觉得文章对您有帮助,欢迎转载、分享,也可以点击文章右下角【推荐】一下!