git如何撤销上一次commit操作

1.第一种情况:还没有push,只是在本地commit

git reset --soft|--mixed|--hard <commit_id>
//git reset --hard commit_id    亲测有效
git push develop develop --force  (本地分支和远程分支都是 develop)

这里的<commit_id>就是每次commit的SHA-1,可以在log里查看到

--mixed    会保留源码,只是将git commit和index 信息回退到了某个版本.
--soft   保留源码,只回退到commit信息到某个版本.不涉及index的回退,如果还需要提交,直接commit即可.
--hard    源码也会回退到某个版本,commit和index 都会回退到某个版本.(注意,这种方式是改变本地代码仓库源码)

当然有人在push代码以后,也使用 reset --hard <commit...> 回退代码到某个版本之前,但是这样会有一个问题,你线上的代码没有变,线上commit,index都没有变,当你把本地代码修改完提交的时候你会发现全是冲突.....这时换下一种

2.commit push 代码已经更新到远程仓库

对于已经把代码push到线上仓库,你回退本地代码其实也想同时回退线上代码,回滚到某个指定的版本,线上,线下代码保持一致.你要用到下面的命令

git revert <commit_id>

然后push即可

git push

revert 之后你的本地代码会回滚到指定的历史版本,这时你再 git push 既可以把线上的代码更新。

注意:git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit,看似达到的效果是一样的,其实完全不同。

第一:上面我们说的如果你已经push到线上代码库, reset 删除指定commit以后,你git push可能导致一大堆冲突.但是revert 并不会.
第二:如果在日后现有分支和历史分支需要合并的时候,reset 恢复部分的代码依然会出现在历史分支里.但是revert 方向提交的commit 并不会出现在历史分支里.
第三:reset 是在正常的commit历史中,删除了指定的commit,这时 HEAD 是向后移动了,而 revert 是在正常的commit历史中再commit一次,只不过是反向提交,他的 HEAD 是一直向前的.

git 取消commit相关推荐

  1. git 回滚、取消commit、取消merge等回退操作

    前言 在此之前,建立一个约定. commit会产生提交id,merge之后也会产生提交id.也就是说merge是commit的一种操作. 但是为了表达方便,我们将commit和merge统称为更新,c ...

  2. commit git idea 速度慢_关于Idea使用git时commit特别慢的问题及解决方法

    使用idea提交代码到本地git仓库时,可能会出现提交速度特别慢的情况,因为是本地提交,所以可以排除网络原因,那就有可能是电脑性能问题,一般生产力工具也不是说换就换的,主要是各种配置和环境需要重新搭建 ...

  3. git 取消合并与撤销

    Git取消合并与撤销 git取消合并# git merge --abort git撤销# git reset - git reset --soft: 将分支回退到指定提交,工作区维持现状不变,暂存区会 ...

  4. git 只commit不push 会有影响吗_规范化团队 git 提交信息

    规范化团队 git 提交信息 同一个工程项目,为了方便管理,git 的 commit 信息最好按照一定的格式规范,以便在需要的时候方便使用.什么是方便的时候,比如出现了一个线上 bug,所以需要回滚操 ...

  5. git撤销commit 并保存之前的修改

    撤销并保留修改 参数 –soft # 先进行commit ,之后后悔啦 $ git commit -am "对首篇报告研究员字段改为author_name" 执行git log $ ...

  6. 文件在IDEA中已进行Git的Commit操作,使其从暂存区提交到本地仓库,但是未Push到远程仓库,此时进行Pull操作出现代码冲突

    问题描述:文件在IDEA中已进行Git的Commit操作,使其从暂存区提交到本地仓库,但是未Push到远程仓库,此时进行Pull操作出现代码冲突 解决方法:出现上述情况时,我们要先将文件从本地仓库中拉 ...

  7. git回退commit的操作

    git回退commit的操作 1 git reset 1. Git -Log-找到当前commit,即当前第一个 2. 右击选择 Go to parent commit 3. 找到本地的上一次提交 4 ...

  8. 【Git】Git修改 commit 的信息

    Git 修改 commit 的信息 ①:git log 查看提交日志,找到要修改的commit ②:git rebase -i HEAD~n 1.切换到需要修改的 commit 中,n为commit的 ...

  9. Git关于commit的操作,修改message,合并commit,撤销commit

    文章目录 Git修改已提交commit的message信息 修改最近一次commit的message 修改之前commit的message 合并commit 合并连续的commit 合并间隔的comm ...

最新文章

  1. 模型web迁移延时太长,机器学习神器Cortex 能一键解决吗?
  2. 三线压力传感器原理_弹性式压力表、弹簧管压力表、压阻式压力传感器的原理、选型、安装...
  3. html5 input required oninvalid,为什么我的“ oninvalid”属性会让模式失败?
  4. 薪资涨幅60%,直通一线互联网公司的秘密......
  5. C++基础 (1) 常见的易错问题
  6. 微信公众号消息模板开发
  7. navicat工具把SQL Server数据库转换MySQL数据库
  8. extjs_04_grid(弹出窗口amp;行编辑器 CRUD数据)
  9. XMindCrack.jar下载
  10. MatLab绘制直方图
  11. [ESXI6.5集成realtek网卡的镜像
  12. thinkpad Fn键设置
  13. python爬虫—练习题(re,requestBeautifulSoup,selenium)
  14. (纪录片)鸟瞰中国 China from Above
  15. STC15官方库函数
  16. 使用echarts的3D地图中的map3D与scatter3D混合使用时出现坐标位移的情况
  17. clipboard 多次回调
  18. 连接Oracle报错 ORA-00257
  19. 相关系数-excel-CORREL()
  20. OpenCV-Python投影透视变换函数getPerspectiveTransform及warpPerspective详解

热门文章

  1. python大数据运维工程师_运维工程师转型大数据怎么样
  2. 游戏 - 大树与松鼠
  3. 服务器显示网络上有重名,通过域名访问共享,提示由于网络上有重名,没有连接的解决方法...
  4. Linux 调度策略 SCHED_OTHER SCHED_FIFO SCHED_RR SCHED_BATCH SCHED_IDLE
  5. android微信自动化脚本,appium——微信小程序自动化
  6. 阿里云大数据工程师ACA认证考试大纲
  7. 2021年软件技术部Linux培训
  8. 【转载】正确解决:坑爹的0xc000007b——应用程序无法正常启动
  9. [2017.11.05]正则表达式集合list
  10. SViva数字化口腔医疗解决方案