git版本回退操作

git版本回退操作搞懂 git 回退命令 如果不慎提交 可通过 gitreset gitrevert 来撤销操作

git版本回退操作

本文 git 相关命令:

  • git reset:回退版本,可指定某一次提交的版本。git reset [–soft | –mixed | –hard] commitId。
  • git revert:撤销某个提交,做反向操作,生成新的commitId,原有提交记录保留。git revert commitId。
  • git status:查看文件在工作区和暂存区的状态。
  • git log:查看代码提交记录。
  • git cherry-pick:选择commitId 应用在当前分支。git cherry-pick commitId。

回退分两种情况:

  • 已 commit,未push到远程仓库。
  • 已 commit,并且push到了远程仓库。

已 commit,未push到远程仓库

git reset –soft(撤销commit)

touch 创建了一个a.text,并提交到了本地仓库。

git版本回退操作

此时回滚a.text,git log找到要回退到的版本号,此处版本号为前一个版本。(或者通过 git reset [HEAD] 回退版本)

git版本回退操作

执行命令:git reset –soft 7ee5305f1e1e0f66c7d69666ff7054fc6e

git版本回退操作

通过idea可看到commit 记录被撤销了。

git版本回退操作

git reset –mixed(撤销 commit 和 add 两个动作)

touch创建新文件 b.text, 并提交到本地仓库。

git版本回退操作

通过git log找到要回退到的版本号 7ee5305f1e1e0f66c7d69666ff7054fc6e

执行命令:git reset –mixed 7ee5305f1e1e0f66c7d69666ff7054fc6e

git版本回退操作

git版本回退操作

此时可以看到,git reset –mixed 撤销的文件 未加入到暂存区,所以是撤销 commit 和 add 两个动作。

已 commit,并且push到了远程仓库

git reset –hard(撤销并舍弃版本号之后的提交记录)

新建文件a.text,并push到远程。

git版本回退操作

执行命令:

  • git reset –hard 7ee5305f1e1e0f66c7d69666ff7054fc6e
  • git push -f(强制推送到远程,之前提交都会被覆盖,慎用)

git版本回退操作

此时可用看到提交记录和文件都被撤销了。使用需谨慎,不推荐使用。


当然,如果不小心用了git reset –hard操作回退了,那么可用git reflog命令查看命令历史,找到被删除的commit,再次操作。

git版本回退操作

git revert(撤销,但是保留了提交记录)

新建文件a.text,并push到远程。

通过 git revert 版本号,撤销当前提交记录。版本号为要撤销的版本号,此处为当前提交的版本号。

git版本回退操作

可以看到本地和远程仓库文件都被撤销了。但是git log中能看到提交和撤销记录。

推荐用这种方式回退远程的代码。比如我们在master分支提交错了文件需要回退,那么我们用这个方式回退后,再用git cherry-pick commitId 重放该提交。最后本地修改了再push到远程。

git版本回退操作

总结

回退分两种情况:

  1. 已 commit,未push到远程仓库。
    • git reset –mixed(撤销 commit 和 add 两个动作)。

    git reset –soft(撤销commit)。

  2. 已 commit,并且push到了远程仓库。
    • git revert(撤销,但是保留了提交记录)。

    git reset –hard(撤销并舍弃版本号之后的提交记录)。

git版本回退操作

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233408.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • spring cloud 入门系列二:使用Eureka 进行服务治理「建议收藏」

    服务治理可以说是微服务架构中最为核心和基础的模块,它主要用来实现各个微服务实例的自动化注册和发现。SpringCloudEureka是SpringCloudNetflix微服务套件的一部分

    2022年2月16日
    40
  • navicatpremium 15 mac 激活码(JetBrains全家桶)

    (navicatpremium 15 mac 激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月20日
    71
  • Pytest(8)parametrize参数化[通俗易懂]

    Pytest(8)parametrize参数化[通俗易懂]前言当某个接口中的一个字段,里面规定的范围为1-5,你5个数字都要单独写一条测试用例,就太麻烦了,这个时候可以使用pytest.mark.parametrize装饰器可以实现测试用例参数化。官方示

    2022年7月28日
    6
  • docker映射端口命令_docker底层原理

    docker映射端口命令_docker底层原理一、容器为什么要做端口映射查看宿主机的IP信息docker容器的IP信息下面面这一段这就是docker的网络,我们可以看到它的网段是172.17.0.0段的。3:docker0:<BROADCAST,MULTICAST,UP,LOWER_UP>mtu1500qdiscnoqueuestateUPgroupdefaultlink/ether02:42:b6:4b:f0:16brdff:ff:ff:ff:ff:ffinet172.17.0

    2022年10月11日
    4
  • Python之operator库

    operator库常用方法operator.itemgetter返回一个可调用对象,获取项目使用的操作数的__getitem__()方法操作数。如果指定了多个项,则返回一个查找值元组。>&

    2021年12月19日
    68
  • 重学《Java从入门到精通》第四版 清华大学出版社[通俗易懂]

    重学《Java从入门到精通》第四版 清华大学出版社[通俗易懂]作为一名刚毕业1年半的AndroidDeveloper,在工作后总发觉自己的Java功底很是欠缺。所以准备再重新学习一遍Java。温故而知新,可以为师矣。Java这门编程语言或许会被其他编程语言所代替,但其优秀的编程思想却永远不会消失,所以不用有所质疑,选择它没有错。Java这门编程语言我是从大二以看视频的方式开始学起的(那种零基础学Java视频)。在学校图书馆看了近1个月,大致了解了Java中的一些关键字、对象名称、常用特性等。至于手敲还是很懵懂、也不熟练。所以就淘宝选购了本《Java从入门到精通》

    2022年7月8日
    25

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号