• 记一次commit回退


    背景

    之前改完代码匆匆push到我fork的仓库上。然后才发现有个commit提交了一些不该提交的配置文件。

    怎么解决

    想要把这个commit去掉,我是直接: 

    git revert 001c67(001c67是你要回退到指定历史的版本号)

    然后push到远程指定分支上:

    git push origin master

    git revert说明

    git revert是用一个新commit来消除一个历史commit所做的修改,revert 之后你的本地代码会回滚到指定的历史版本。也就是说revert 是在正常的commit历史中再commit一次,只不过是反向提交,他的 HEAD 是一直向前的。

    git reset

    如果是要去掉还没push的commit,建议还是用reset,具体操作:

    git reset --hard 001c67(你要干掉的commit的版本号)

    这个命令表示:彻底回退到某个版本,本地的源码也会变为上一个版本的内容

    git reset的默认方式是:git reset --mixed,当它回退到某个版本时,只保留源码,回退commit和index信息

    还有一种是git reset --soft:它回退到某个版本时,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可

    简单总结一下,其实就是三个不同的恢复等级,--soft 、--mixed以及--hard。使用--soft就仅仅将头指针恢复,已经add的缓存以及工作空间的所有东西都不变。如果使用--mixed,就是将头指针恢复掉,已经add的缓存会丢失掉,工作空间的代码什么的是不变的。如果使用--hard,那么一切就全都恢复了。

    git reset比较常用的场景:合并最近几个commit:

    比如我提交了5个commit,这时候我想把这5个commit作为一个commit提交到远程分支,可以先把那5个commit撤下来,如下:
    git reset HEAD~5
    上面命令是指撤下最近的5个commit, 撤下来以后,这5个commit相关的文件都在工作台了,只需要重新add,commit,即可。
    注意: 如果commit已经push到远程分支了,这时候我们撤下来再push会失败,需要加上-f,如:
    git push -f origin xxx_dev

  • 相关阅读:
    第四节 pandas 数据加载
    第五节 matplotlib库
    第二节 pandas 基础知识
    第一节 anaconda+jupyter+numpy简单使用
    枚举效率测试 --简单计算题
    Tree 树形结构
    django url分发,视图,模板回顾
    django自定义分页器
    转git的使用
    转Git配置SSH,并Push到GitHub上的相关流程
  • 原文地址:https://www.cnblogs.com/dahao1020/p/5812836.html
Copyright © 2020-2023  润新知