git reset --soft --mixed --hard --amend

理解HEAD

HEAD指的是当前分支的HEAD指针所指向的commit,若当前分支有3次提交1->2->3,那么HEAD此时就指向第3次提交所对应的commit

理解HEAD~

~代表父级,若当前分支有3次提交1->2->3,那么HEAD ~此时就指向第2次提交所对应的commit

理解–soft

若当前分支有3次提交1->2->3,变更内容对应1,2,3,那么 git reset --soft HEAD~ 会将HEAD指针指向2,且索引区和工作去都没有变化,此时索引区为3,工作区为3,只是单纯移动这个指针,若要还原,则需要git commit 就能回到之前1->2->3的状态

理解–mixed

若当前分支有3次提交1->2->3,变更内容对应1,2,3,那么 git reset --soft HEAD~ 会将HEAD指针指向2,且清空索引区,工作区不会变化,此时索引区为空,工作区为3,若要还原,则需要 (1) git add . (2) git commit

理解–hard

若当前分支有3次提交1->2->3, 那么 git reset --hard HEAD~ 会将HEAD指针指向2,且清空索引区和工作区,此时索引区为空,工作区为2,丢失所有第三次提交相关信息,又得从第2次提交后的状态开始,若要还原,则需要(1)在工作区更新为3(2)git add .(3) git commit

理解git reset HEAD~

等同于 git reset --mixed HEAD~

案例演示

进行两次提交
echo “a” >> a.txt git add . git commit -m “change a”
echo “b” >> a.txt git add . git commit -m “change b”
此时的查看commit id 已经有两次提交

commit ed39f0c18e310692307ebf7f38bdd6c73f189e7d
Author: root <root@192.168.64.151>
Date:   Fri Dec 24 20:06:04 2021 +0800
    change b
commit a60822a64f3fa4041c65b94c8908344a84a35c8a
Author: root <root@192.168.64.151>
Date:   Fri Dec 24 20:05:41 2021 +0800
    change a

此时进行第三次提交时你不小心使用到了–amend,第二次提交的commit id 就被覆盖了
echo “c” >> c.txt git add . git commit --amend
新的commit是

commit 2edae1b7efe0816499523328f66fd68361e920da
Author: root <root@192.168.64.151>
Date:   Fri Dec 24 20:06:04 2021 +0800
    change b
commit a60822a64f3fa4041c65b94c8908344a84a35c8a
Author: root <root@192.168.64.151>
Date:   Fri Dec 24 20:05:41 2021 +0800
    change a

此时不要慌,赶紧通过git reflog 查看第二次提交的commit id,可以看到第二次提交的commit id是ed39f0c

[root@192 git]# git reflog
2edae1b HEAD@{0}: commit (amend): change b
ed39f0c HEAD@{1}: commit: change b
a60822a HEAD@{2}: commit (initial): change a

势必得回滚一下,再想我们是不是应该保留第三次提交在工作区和索引去,因为这是我们今天的工作可丢不得,那么联想上面所讲的,要保留索引区和工作区是不是得使用–soft然后重新提交,那么赶紧安排一下

[root@192 git]# git reset --soft ed39f0c
[root@192 git]# git commit -m "change c"

完成了以上操作再看commit id,是不是就正常了!

[root@192 git]# git log
commit 75d724eb917674c4ad2dd6d4bdb24f1c055bc77d
Author: root <root@192.168.64.151>
Date:   Fri Dec 24 20:16:05 2021 +0800
    change c
commit ed39f0c18e310692307ebf7f38bdd6c73f189e7d
Author: root <root@192.168.64.151>
Date:   Fri Dec 24 20:06:04 2021 +0800
    change b
commit a60822a64f3fa4041c65b94c8908344a84a35c8a
Author: root <root@192.168.64.151>
Date:   Fri Dec 24 20:05:41 2021 +0800
    change a
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值