git撤销commit ,并且保留修改

问题背景

在多人协作开发的项目中,一般都是从master中新建一个分支进行修改开发,完了就提交、合并、删除分支。可很多时候就是不长记性,分支也不建直接在master上开干,做完之后一顿操作梦如虎,git status -> git add . -> git commit -m ‘’ 一气呵成,当正要提交的时候,瞄了一下编辑器左下角,吗惹,怎么还在master分支上,凉凉~~~~~~~
未等我汗滴留下来,心想,git那么强大的工具,对于这种情况的处理肯定有完整的回退解决方案的吧,一查吗,果不其然,哈哈哈哈

解决步骤
1、看下提交记录

命令:

git log 

不过这样输出比较琐碎难看,一般来说是通过以下这句来查看提交记录:

git log --pretty=oneline

在这里插入图片描述
每行前面那串长长的东西就是每次提交所生产的唯一标识,其实就是哈希值,这个标识很有用,回退到哪个版本全靠它

2、回退到上次提交,并且保留修改
git reset --soft 319c879dc5ff2d18d71164523c2009da6bcf2011   //假设这串东西是修改之前的最近一次提交的哈希值

这样就会恢复到没有commit前的状态,而且最重要的是!我们的修改还在,oh no 太强大了
注意,git --reset 后面跟的可以是soft或者hard,如果是hard的话,就是简单粗暴,回退的同时修改也会不见,所以一般不建议用hard。

3、暂存修改,切换分支

先把修改暂存起来,然后查看分支状态,嗯,很干净,赶紧切个分支再说,切到新的分支再把修改的内容恢复到当前分支岂不是美滋滋,就这么干

git  stash

这样就把修改暂存起来了,
执行 git status查看当前分支状态,ok, 暂存之后空空如也~~~

然后赶紧切换个分支:

git checkout -b 分支名

这个命令是新建分支再切到新建分支,如果原本就有分支的就直接git checkout 分支名 就可以了

4、恢复暂存、添加 提交猛如虎

好的,来到现在这个分支,加入分支名为dev
首先,看下暂存的东西

git stash list

就像这样,前面的stash@{0}就是暂存的标识,因为同一分支可能有很多暂存内容,我们可以选择性的恢复暂存
在这里插入图片描述

对于只有一个暂存的情况,直接使用以下命令恢复暂存到工作区:

git stash pop

看下当前工作状态,嗯,哭了,回来了 ----

最后

提交 -> 推送 ->合并 -> 删除分支(删不删随意)

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值