首页 > 其他分享 >git reset 命令详解 git revert命令详解。

git reset 命令详解 git revert命令详解。

时间:2024-02-21 19:33:07浏览次数:25  
标签:reset git -- revert 命令 详解 提交 commit

https://blog.csdn.net/wangdawei_/article/details/124543824

git reset 命令详解
reset命令
介绍
参数
使用
commit还没有push
commit 已经push
补救
git revert命令
revert说明
举例
命令


reset命令
介绍
git reset 命令格式为:
git reset [ --soft | --mixed | --hard ] [< commitid >]
在git的这些命令中git reset是最长常用的,也是最危险的最容易被误用的。它的主要参数是:soft,mixed,hard它们告诉git,当执行reset是,要对index和working copy做什么。

参数
soft:
–soft参数只将其它的commit重置到你选定的HEAD,index和working copy中的数据不变。
mixed:
–mixed参数是将HEAD和index重置到你选定的HEAD,而working copy不变。
hard:
–hard是将HEAD,index,working copy同时改变到你规定的commit上。
注意:commitid是每次你要回退到的那个commit的id,它可以通过git log获取。

使用
commit还没有push


可以看到我新进行了一次提交,但是还没有push。此时我发现,我提交错了,要撤回这次提交。
执行:

git log
1

要退回到错误提交的上一次提交。

# 什么都不写 默认 --mixed
git reset 0997fab2fa0bfa468cc5c55e56d7df0491869c3a
1
2

可以看到,执行了命令之后版本退回去了,但是修改的内容还在。
如果不想要修改的内容了

# --hard 丢弃修改的内容
git reset --hard 0997fab2fa0bfa468cc5c55e56d7df0491869c3a
1
2

退回到了指定版本,修改的内容也没了。

commit 已经push
回退的方式同上,执行完上面指定命令后 可以看到,线上代码还在错误提交那里,本地代码再18:28提交的那一次那里。右下方出现小蓝点,说明线上代码比本地代码更新。


此时如果你push,会提示:

点击merge就又回去了,完全没退回去。
此时应该执行:

# 有可能会让你输入用户名、密码。
git push --force
1
2

 

这样远程代码也就被回退了。

补救
如果我们通过git reset --hard将版本回退到之前的版本了,那我们还是可以补救的,先通过git reflog命令,找到要回退的commitId,然后通过命令:git reset --hard commitId来恢复。

git revert命令
revert说明
  由于某些文章说的说法可能不是很明确,所以导致一部分小袁同志们对revert有一定的误解,一开始我也很难理解revert到底是干什么的。毕竟用于版本回退的都已经有git reset了,为什么还要再出一个git revert?
  其实呢,revert它不会想reset一样”带你回到“那个你指定的提交,并假装那个提交之后的后续提交都没有发生。它是用于单个提交的逻辑否定 -并且单独提交- 保留后续提交。

举例
比如:
我们有一个文件里面写了:

提交A
提交B
提交C
提交D
1
2
3
4
第一次我们把它改成:

提交A
2提交
提交C
提交D
1
2
3
4
并提交 假设commitId是tijiao1

第二次我们把它改成:

提交A
2提交
提交C
4提交
1
2
3
4
并提交 假设commitId是tijiao2

之后我们进行revert:
git revert tijiao1
此时结果会变成:

提交A
提交B
提交C
4提交
1
2
3
4
所以我们要知道revert是只撤回指定的提交,并保留后续的提交。
如果你想让版本直接回退到tijiao1并且取消后续所有提交那你应该使用reset。

命令
revert分两种,因为commit分两种。
一种是常规的 commit,也就是使用 git commit 提交的 commit;
另一种是 merge commit,在使用 git merge 合并两个分支之后,你将会得到一个新的 merge commit,merge commit 和普通 commit 的不同之处在于 merge commit 包含两个 parent commit,代表该 merge commit 是从哪两个 commit 合并过来的。
常规的revert:

//撤回指定的任意提交
git revert commitId
//撤回最后一次提交
git revert HEAD
//撤回倒数第二次提交
git revert HEAD^
1
2
3
4
5
6
merge commit 的revert:加上-m表示撤回哪一个分支的。它的数据是1或2.


//保留第一个分支为主线
git revert -m 1 commitId
1
2
文章
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/wangdawei_/article/details/124543824

标签:reset,git,--,revert,命令,详解,提交,commit
From: https://www.cnblogs.com/simadi/p/18026067

相关文章

  • visual studio 2022 的git提交大文件的方法
     我用visualstudio2022的git提交代码后推送,出现一个大文件无法推送怎么办? 可以直接用命令推送 项目文件夹右键,选择gitbashhere。   ......
  • Docker Exec 命令详解与实践指南
    简介DockerExec是Docker中一个非常有用的命令,它允许您在正在运行的容器内部执行命令。这对于调试、管理和与容器进行交互非常有帮助。在本篇文章中,我们将深入探讨DockerExec命令的使用方法,并提供一些实用的示例,旨在帮助初学者更好地理解和运用这一功能。什么是DockerE......
  • iptables命令详解和举例
     1、防火墙概述          防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种。无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘。而我们的任务就是需要去定义到底防火墙如何工作,这就是防火墙的策略,规则,以达到让......
  • django常用命令
    常用命令任务命令创建新项目django-admin.pystartprojectproject_name(注意:windows系统下请用django-adminstartprojectproject_name)创建新应用pythonmanage.pystartappapp_name(注意:你需要先cd进入创建的项目文件夹)检测模型变换,生成数据库同步脚......
  • Git commit日志基本规范
    Git commit日志基本规范<type>(<scope>): <subject><BLANK LINE><body><BLANK LINE><footer>对格式的说明如下:type代表某次提交的类型,比如是修复一个bug还是增加一个新的feature。所有的type类型如下:feat: 新增featurefix: 修复bugdocs: 仅仅修改了文档,比如READM......
  • 如何使用极狐GitLab 代码推送规则,提高代码质量?
    简述极狐GitLab中的推送规则(PushRules)是一种强制执行代码仓库规范和最佳实践的方法。推送规则解决了以下场景的痛点:第三方需求管理工具集成:比如与Jira集成需要开发者提交代码时的commitmessage中携带JIRA-ID,通过推送规则的正则约束,可以有效的避免野生commit的存在,确保commi......
  • 设计模式浅析(六) ·命令模式
    设计模式浅析(六)·命令模式日常叨逼叨java设计模式浅析,如果觉得对你有帮助,记得一键三连,谢谢各位观众老爷......
  • linux基础命令(五)
    ##################################################管理用户和组用户:登录操作系统,不同的用户具备不同的权限组:方便管理用户用户唯一标识:UID组唯一标识:GID管理员root的UID为0组的分类:基本组(私有组)附加组(从属组)原则:一个用户必须至少属于一个组基本组(......
  • 项目开发中的权限管理设计方案详解
    为什么需要权限管理日常工作中权限的问题时时刻刻伴随着我们,程序员新入职一家公司需要找人开通各种权限,比如网络连接的权限、编码下载提交的权限、监控平台登录的权限、运营平台查数据的权限等等。在很多时候我们会觉得这么多繁杂的申请给工作带来不便,并且如果突然想要查一些数......
  • 查看Linux内核版本的命令
    方法一:命令:uname-a作用:查看系统内核版本号及系统名称方法二:命令:cat/proc/version作用:查看目录"/proc"下version的信息,也可以得到当前系统的内核版本号及系统名称补充说明:/proc文件系统,它不是普通的文件系统,而是系统内核的映像,也就是说,该目录中的文件是存放在系统内存之中的......