一把剪刀看懂git reset 和它的三个参数

 

都说git 命令难记且难懂,可是若是从立体的角度看待git与git管理的版本,那么一切都会明朗许多。git

大多数的学习教程为了理解git,会绘制几个圆圈的串联,每一个圆圈表明一个commit的版本,也就是从时间线上看git 是一串commit。大多数时候这样的理解是足够了,可是若是当使用git reset 命令的时候这样的一串圆圈并不能帮助咱们理解git reset 加上--hard、--soft和--mixed这三个参数究竟会发生什么。学习

好比git reset commit B --soft, 咱们的工做目录是什么样子,stage里面是什么?3d

使用串联起来的圆圈的模型会让咱们无所适从,而许多人应该都是经过记忆这个命令产生的效果来知道这个命令以后代码处于什么状态,或者是用多了也就知道了,或者是搜索一下。blog

实际上,若是咱们使用本文一开始的图片来理解,不用搜索,不用使用不少次(大部分时候用了好屡次也会忘记),就会知道git reset 那三个参数发生了什么。教程

使用git reset 命令的时候,头脑里面浮出图片, 而后想象本身手中拿着一把剪刀,当使用git reset --mixed commit x时,就是把commit x 的红色的线剪掉,这时候咱们就处在commit x的最下面,也就是咱们的working dir至关于咱们将要把版本x 进行add和commit的时候。图片

若是使用的是git reset --soft commit x, 就是用剪刀剪掉了commit x的黄色的线,咱们这时候处于stage了代码,将要把代码commit 成x的阶段。it

若是使用了git reset --hard commit x,就是用剪刀剪掉了 commit x左边的黑色线条,这时候咱们处于commit x的前一个commit 中,好比x等于B,那么咱们这时至关于刚刚commit了A。搜索

 

原文首发于:https://zhuanlan.zhihu.com/p/28642742im

相关文章
相关标签/搜索