zoukankan      html  css  js  c++  java
  • 记一次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

  • 相关阅读:
    百度编辑器如何能实现直接粘贴把图片上传到服务器中
    百度ueditor如何能实现直接粘贴把图片上传到服务器中
    ueditor如何能实现直接粘贴把图片上传到服务器中
    html+SpringMVC超大视频上传解决方案
    html+java超大视频上传解决方案
    html+JSP超大视频上传解决方案
    html+CSharp超大视频上传解决方案
    html+.net超大视频上传解决方案
    SAP 函数CRM_ORDERADM_I_PROD_DETERM_OW的单元测试方法
    SAP CRM Opportunity行项目Alternative ID的填充逻辑
  • 原文地址:https://www.cnblogs.com/dahao1020/p/5812836.html
Copyright © 2011-2022 走看看