git reset (hard soft mixed) 区别

准备环境

如下所示,创建A并加入暂存区
System.out.println(“E”);内容然后commit StringDemo文件
commit之后在StringDemo中新增
System.out.println(“E commit 之后 工作区内容”);

git reset (hard soft mixed) 区别_第1张图片

我们准备回滚到下图的分支,先粘贴该分支版本号
git reset (hard soft mixed) 区别_第2张图片
按如下方式操作
git reset (hard soft mixed) 区别_第3张图片

演示hard

选择hard 粘贴版本号
git reset (hard soft mixed) 区别_第4张图片

我们看到如下结果
首先暂存区内容(A)文件被删除了
然后 E节点的提交记录消失了
E节点提交之后的工作区内容消失了
git reset (hard soft mixed) 区别_第5张图片
然后我们再次点击commit,并没有发现什么可提交的文件
git reset (hard soft mixed) 区别_第6张图片
工作区内容、暂存区内容以及Repository的内容,都会恢复到回退的那个节点的代码,并且之前该版本后面的所有commit都会被删除

演示soft

git reset (hard soft mixed) 区别_第7张图片

reset后发现
暂存区(A)文件并没有被删除
提交记录中E节点记录被删除
StringDemo文件中工作区内容没有变动,以及提交的内容也没有被删除
git reset (hard soft mixed) 区别_第8张图片
但是,我们点击commit查看可提交内容以及StringDemo的变动可以看出
git reset (hard soft mixed) 区别_第9张图片
git reset (hard soft mixed) 区别_第10张图片
工作区和暂存区的内容都不会被修改,不过soft后所带来的差异(就是reset目标版本号)以后,所带来的所有的修改,会被保存到暂存区,也就是相当于git add 后但是没commit前

演示mixed

git reset (hard soft mixed) 区别_第11张图片

reset后可以看到好像除了提交记录没有之后,文件并没有什么变动
git reset (hard soft mixed) 区别_第12张图片

那么我们来查看一下commit
首先对比soft我们发现可提交文件少了A文件
git reset (hard soft mixed) 区别_第13张图片

然后我们再看StringDemo的文件内容
git reset (hard soft mixed) 区别_第14张图片

然后我们把A文件添加到暂存区
git reset (hard soft mixed) 区别_第15张图片
就可以发现可提交文件有了A文件
git reset (hard soft mixed) 区别_第16张图片

总结
只会保留工作区 的修改,暂存区以及mixed带来的差异,会被全部放到工作区中,也就是相当于没有git add之前的状态

你可能感兴趣的:(git,git)