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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值