git reset的用法

本文详细介绍了git reset的三种用法,包括-hard、-mixed和-soft参数的区别,强调了使用时应注意的危险,特别是使用-hard可能导致的不可逆更改。还介绍了如何通过reflog来挽救错误的重置操作,以及git reset命令的第二种用法,用于单独处理暂存区的文件。了解这些内容能帮助开发者更好地掌握git reset并避免潜在风险。
摘要由CSDN通过智能技术生成

git reset的讲解

分支游标 master

我们仔细了解一下 git 的分支管理,就可以知道,其实 git 的所有管理都是通过 commit id 实现的,我们常用的 HEAD, master 以及分支名其实都只是代表的一个 commit id 而已,只不过是为了方便我们的记忆以比较 human 的方式表示。master 以及其他的 分支名对应的 commit id都存放在 .git/refs/heads 目录下,远程分支名存放在 .git/refs/remotes 目录下。

基本的三种reset 命令

首先讲三条不同参数下 reset 的命令,然后做一下个人的总结:

  • git reset –hard commit-id

    这条命令是最凶狠的,这条命令会将游标指向 commit-id指向的那次提交,并且暂存区也会更新到指定的那次提交时的内容,更狠的是暂存区的内容也会被覆盖。

  • git reset –mixed commit-id

    OK,这条命令没那么厉害,仓库和暂存区指向都会改变,不过工作区的内容不会改变。这也是默认的参数,–mixed可以不写。

  • git reset –soft commit-id

    这条命令是最弱的,只会改变仓库的游标。

我们在使用reset的时候需要很小心,因为在使用了reset命令之后,我们的游标就发生了变化,而我们使用 git log 时则找不到之前最新修改的 commit id, 即表示我们回不到最新的修改了,特别是如果使用了 –hard 参数,则真的就无力回天了。(实际上通过其他的途径也可以找到这个commit id,下面会讲到一种方法)

用 reflog 挽救错误的重置

我们在上面说过用 reset 命令会导致通过 git log命令找不到 commit-id 的问题,这里提供了一种挽救的机制(但是再次重申一下,如果是使用了–hard 参数,则丢失的修改是怎么也找不回来的,只能节哀了)reflog。
cat .git/logs/refs/heads/master (我们

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值