随笔 - 832  文章 - 2  评论 - 31  阅读 - 167万

git 教程 --git reset 命令

简介

在程序员实际工作过程中,提交代码后,偶尔也有后悔的时候,但是都提交到本地仓库或者推送到远程服务器了,可怎么办?我想要回到某一个提交的版本,git就很贴心的提供了对应的功能,可以让你随心所欲的后悔。虽然世界上没有后悔药,但是git可以做到。

git reset前置知识

 

  • 使用git reset之前,需要对git中的区域有一定的了解。git中的区域划分为工作区(WorkSpace)、暂存区(Stage/Index)、本地库(Local Repo)和远程库(Remote)四个区域。

 

 

  • 同时git reset还需要跟三个参数联合使用,效果更好

  • --hard

  • --mixed

  • --soft

三个指令的区别:对于工作区、暂存区、本地仓库的回滚的粒度范围不一样,可以根据实际的需求选择不同的参数来回滚不同区域的代码。

git reset --hard指令图解

 

  • 使用当前的命令,工作区、暂存区、本地仓库都会回滚到对应commit-id上

 

git reset --mixed指令图解

  • 使用当前的命令,工作区代码不会受到影响,但是暂存区、本地仓库区的代码已经回滚到了YY对应的commit-id上。

git reset --soft指令图解

  • 使用当前的指令,工作区和暂存区的代码不会受到影响,但是本地仓库的代码会回滚到YY对应的commit-id上

总结

对于--hard,--mixed,--soft参数,可以根据具体情况使用,区别就是git中工作区、暂存区、本地仓库是否会受到影响。根据上文可以看出,他们三个对于git区域的影响范围一次递减。如果有良好的add,commit的习惯(根据工作进度及时commit,不要所有的东西一次性梭哈)建议使用--hard模式,但是同时可以跟其它的指令综合使用,比如

复制代码
1、 git reset xx [file](等于git reset --mix ,mix可省略)
还原版本,移动HEAD到指定得位置,比如有A-B-C(HEAD)分支,现在在C提交,如果执行git reset B,则代表把HEAD移动到B,同时如果用git status命令查看,会发现之前提交到C得东西都变成了未提交状态,并且还未add到暂存区。
使用场景:比如我提交后,发现某个代码写的有问题,此时commit在C ,那么我可以使用git reset B ,然后我之前修改得东西都还在,并且处于未add得状态,我可以在之前修改得基础上再修改,把代码改对,然后再git add xxx ,git git commit -m “xxxx”
2、 git reset --soft xx
和git reset 类似,不过reset后,之前修改得东西还处于add状态,
3、 git reset --hard xx
危险操作,慎重使用,reset后,会清空工作区、暂存区以及xx之后得提交,反正xx之后得内容都没了。

我能想到得场景:代码修改多了,发现改得一团糟,想丢掉重头来,则可以使用这个命令
复制代码

参考:  git 常用命令:

复制代码
git stash -m "暂存信息"

git reset --模式 commit-id

HEAD 说明:


  • HEAD 表示当前版本

  • HEAD^ 上一个版本

  • HEAD^^ 上上一个版本

  • HEAD^^^ 上上上一个版本

     

  • 以此类推...

     

可以使用 ~数字表示
  • HEAD~0 表示当前版本

  • HEAD~1 上一个版本

  • HEAD^2 上上一个版本

  • HEAD^3 上上上一个版本

  • 以此类推...

 
复制代码
posted on   小破孩楼主  阅读(3785)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
历史上的今天:
2018-11-10 声音
2018-11-10 视窗
2018-11-10 返回值
2018-11-10 系统变量
2018-11-10 数值计算
2018-11-10 如何解决飞秋FeiQ绑定端口错误
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示