git revert 用法
git revert 撤销 某次操作,此次操作之前和之后的commit和history都会保留,并且把这次撤销
作为一次最新的提交
* git revert HEAD 撤销前一次 commit
* git revert HEAD^ 撤销前前一次 commit
* git revert commit (比如:fa042ce57ebbe5bb9c8db709f719cec2c58ee7ff)撤销指定的版本,撤销也会作为一次提交进行保存。
git revert是提交一个新的版本,将需要revert的版本的内容再反向修改回去,
版本会递增,不影响之前提交的内容
git reset 用法
git reset 主要用于重置代码,使工作区回到过去的某个状态,主要有3种用法:
使用参数 --hard,如 git reset --hard < commit ID >
直接把 HEAD 指针移动到 commit ID 上,无论修改是否被 add 、 commit ,都直接重置(此时暂存区被清空,工作区的修改被清空),所做的修改将全部丢失,这是非常危险的。但是如果你修改之后进行了 commit 操作,那非常好办,可以用 reflog 查询相应的 hash 值,进行恢复;如果你修改之后,进行了 add 操作,也可以恢复,但是比较麻烦,用 git fsck --lost-found ,参考此博客;如果你修改之后既没有进行 commit 操作也没有进行 add 操作,暂时不知道恢复方法。
使用参数 --soft,如 git reset --soft < commit ID >
使用该参数是安全的,它是把 HEAD 指针移动到 commit ID 上,暂存区和工作区不变。
使用参数–mixed或者不使用参数(默认为–mixed),如 git reset < commit >
使用该参数是安全的,它是把 HEAD 指针移动到 commit ID 上,暂存区被清空,工作区的修改保留。
git rebase 用法
https://www.cnblogs.com/ygunoil/p/15466337.html
区别
1. git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。
2. 在回滚这一操作上看,效果差不多。但是在日后继续merge以前的老版本时有区别。因为git revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现,但是git reset是之间把某些commit在某个branch上删除,因而和老的branch再次merge时,这些被回滚的commit应该还会被引入。
3. git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容。
可以这样简单记忆:
git revert 放弃某次提交
git revert 之前的提交仍会保留在git log中,而此次撤销会做为一次新的提交。
git reset 是回滚到某次提交
git reset --soft
此次提交之后的修改会被退回到暂存区
git reset --hard
此次提交之后的修改不做任何保留,git status干净的工作区。
git rebase 当两个分支不在一条直线上,需要执行merge操作时,使用该命令操作。
该命令执行时极有可能显示merge失败
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗