用一个例子讲讲git reset的用法-----【必须要掌握的命令】

1.本地分支如何操作可以不让下面的分支出现分叉

  • 现有分支情况
    在这里插入图片描述
  • 本地分支操作后的理想情况
    在这里插入图片描述

2.介绍一下git reset

2.1 撤销commit

在这里插入图片描述
   如上图,假如现在我在commit4的位置,XXX为commit2的commit id的话,下面三种方式对commit的撤销结果分别为:

2.1.1 git reset --mixed

git reset --mixed XXX  等价于 git reset XXX   也就是说--mixed是git reset的默认参数

   执行上面的命令后,分支所处的位置为commit2,此时的代码与commit4的代码相同,但是commit2之后的代码处于未进行git add的状态.

2.1.2 git reset --soft

git reset --soft XXX

   执行上面的命令后,分支所处的位置为commit2,此时的代码与commit4的代码相同,但是commit2之后的代码处于已经进行了git add的状态. mixed和soft的区别就在这里.

2.1.3 git reset --hard

git reset --hard XXX

   执行上面的命令后,分支所处的位置为commit2,且commit2之后的代码会丢失.也就是相当于直接回到了commit2,之后的操作都会丢失(比较危险)-----但是如果知道commit4的commit id可以恢复.

一点说明

  • 上面的XXX可以有三种形式,这里以 git reset --mixed XXX为例来讲解
    • 形式1: git reset --mixed commitID

    • 形式2:

      • git reset --mixed HEAD~ #撤回到上次commit
      • git reset --mixed HEAD~~ #撤回到上上次commit
      • git reset --mixed HEAD~~~ #撤回到上上次commit, 依次类推
    • 形式3:

      • git reset --mixed HEAD~1 #撤回到上次commit
      • git reset --mixed HEAD~2 #撤回到上上次commit
      • git reset --mixed HEAD~3 #撤回到上上上次commit, 依次类推

2.2 额外补充—撤销git add

   git reset 还有一个功能就是撤销不小心git add到暂存区里的内容,比如说你执行了下面的代码:

git add . #将工作区中的所有内容加到暂存区

突然发现里面有一个文件xxx.java你是不需要放到暂存区的,就可以直接使用下面的命令,将其移出暂存区,也就是撤销git add

git reset xxx.java  #将xxx.java移出暂存区

3. 开篇问题的解决

   明白了上面的原理的话,解决方式就比较多了,我这里给一个答案,仅供大家参考:

 git log --oneline --graph  #查看历史commit id,并找到commit1'之前的那个commit id
 git reset --soft commit1'之前的commit id
 git stash #将已经开发的代码放到一个临时区
 git pull #拉取远程代码
 git stash pop #将已开发代码从临时区拿出来 并 与远程代码进行冲突解决
 git add 需要加入到暂存区的文件
 git commit -m "注释"
 git push

4. 反思

   写完今天的博客突然想到要是先介绍git reset,当时介绍git mergegit rebase的博客就会换一种姿势写了::>_<::

最后一个小甜点,如果不小心注释写错了咋办???
请试试

git commit --amend
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值