当前位置: 首页 > news >正文

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

场景

我已经提交了2个commit,但是我现在想保留代码的修改,并且回退这2次的commit,可能你觉得很奇怪为啥回退了还要保留代码的修改,因为commit msg可能写错了,或则git邮箱没有使用公司的邮箱等。

参数 –soft

# 先进行commit ,之后后悔啦
$ git commit -am "添加"

执行git log

$ git log
 
commit 3d6788f577faba5e1d408e372031c81beee79749
Author: yous <yous.com>
Date:   Thu Dec 14 10:08:36 2017 +0800
 
    添加
 
commit 5029f0cc08cffb77f7358de7d5534e8f8eacb82e
Author: yous <yous.com>
Date:   Thu Dec 14 09:52:39 2017 +0800
 
    Revert "Revert "修改过程""
 
    This reverts commit c81f785a06804f5f40b41dedd038efbe6d83f8a8.
 
commit c81f785a06804f5f40b41dedd038efbe6d83f8a8
Author: yous <yous.com>
Date:   Thu Dec 14 09:52:22 2017 +0800
 
    Revert "修改"
 
    This reverts commit 5a1d18a032d8c9269613ff14593847f82043e627.
 
commit 5a1d18a032d8c9269613ff14593847f82043e627

可以看出,第一个是我刚刚commit的,我要撤销,当然是选择第二个;

执行命令git reset --soft <commit>

$ git reset --soft 5029f0cc08cf

之后我们查看下,状态:

$ git status
On branch yutao
Your branch is up-to-date with 'origin/yutao'.
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
 
        modified:   dataservice/app/ggservice/v1/event/service/InfoEventService.java
可以看出已经回撤啦,并且保留了修改。

git reset –hard <commit_id>

这种方式,我个人是不推荐,它也是撤销,但是不会保留修改。 
除非你确实是不想要刚刚commit的内容,否则,这个操作会让你之前干的活,白干。 
所以非常不推荐这个方式。

执行git reset --soft后,强制推送你的feature分支到远程

git commit -m 'feat: test'
git push origin feat/blabla --force

相关文章:

  • git merge和git rebase区别
  • git rebase实战操作
  • mac系统如何更改用户名及头像
  • internal/modules/cjs/loader.js:883 throw err;
  • Node: 001全局对象和模块化-如何给node传递参数?
  • Node: mysql学习笔记001
  • Node: MySQL学习笔记002
  • yarn错误The engine “node“ is incompatible with this module
  • Node: 001全局对象和模块化-常见的全局对象
  • node:快速启动一个列表服务器
  • vscode左下角git分支不见了(已解决)
  • 调用百度地图
  • mac电脑如何下载git
  • vscode中setting.json配置
  • css画一个卡通动画
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • 【391天】每日项目总结系列128(2018.03.03)
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • CEF与代理
  • ECMAScript6(0):ES6简明参考手册
  • Intervention/image 图片处理扩展包的安装和使用
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • javascript从右向左截取指定位数字符的3种方法
  • Javascript弹出层-初探
  • Lucene解析 - 基本概念
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • node 版本过低
  • node和express搭建代理服务器(源码)
  • spring-boot List转Page
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • ------- 计算机网络基础
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 我是如何设计 Upload 上传组件的
  • 详解NodeJs流之一
  • ​io --- 处理流的核心工具​
  • #微信小程序(布局、渲染层基础知识)
  • (10)ATF MMU转换表
  • (30)数组元素和与数字和的绝对差
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (C语言)逆序输出字符串
  • (八)c52学习之旅-中断实验
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (分布式缓存)Redis分片集群
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (算法)求1到1亿间的质数或素数
  • (转) RFS+AutoItLibrary测试web对话框
  • (转载)PyTorch代码规范最佳实践和样式指南
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .jks文件(JAVA KeyStore)
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .net 调用php,php 调用.net com组件 --
  • .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
  • .NET正则基础之——正则委托