提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
[一、git reset](#一、git reset)
[二、git diff](#二、git diff)
一、git reset
我们经常需要撤销之前一些修改内容或者回退到之前的版本
reset算法有三种用法如下
get reset --soft 回退到某个版本并且保存工作区和暂存区
get reset --hard 回退到某个版本丢弃工作区和暂存区的内容
get reset --mixed 回退到某个版本保存工作区丢去暂存区
我们先创建几个文件,方便我们在后面展示
接下来我们commit -m和add

接下来我们复制原仓库三次
获取如下
cp -rf repo repo-soft
cp -rf repo repo-hard
cp -rf repo repo-mixed
git reset --soft ID 相当于清楚仓库里的文件,但是本地文件还在
ls在使用ls看到工作区的文件
git ls-file 可以看到在暂存区也是存在的
建议谨慎使用hard这个,但是如果真的误触,可以使用git reflog命令来查看一下我们操作的历史记录,找到操作之前的版本号,使用get reset回退到之前的版本即可
二、git diff
可以用来查看文件在工作区,暂存区以及版本库之间的差异,还可以查看文件在两个版本之间的差距或者不同分支之间的差异
get diff 如果什么都不加的话,就默认比较是工作区和暂存区之间的差异
接下来我们还用上述的仓库进行操作
首先查看有几次提交操作

接着我们修改file3.txt文件的内容

最后我们输入git diff

现在修改后的文件还没有提交到暂存区,我们使用get add把其提交到暂存区中

然后使用git diff看一下结果

当然我们还可以比较工作区和版本库之间的差异只需要使用git diff HEAD就可以了

我们还可以比较暂存区和版本库之间的差异
git diff --cached

那我们现在来提交一下(到仓库中),可以看仓库和暂存区都一样了

比较两个版本之间的差异
git diff+两个想提交版本的ID即可

就可以体现两个版本之间的不同

还可以使用HEAD来表示当前分支的最新提交 ,在后续的学习我们会经常用到

我们还可以使用HEAD~表示上一次提交的版本号

还可以在HEAD~前加上数字表示,HEAD前几个版本

如果后面加上文件就只会显示文件修改的不同

总结
git diff 工作区 vs 暂存区
git diff HEAD 工作区+暂存区 VS 本地仓库
git diff --cached/staged 暂存区vs本地仓库
git diff <commit_hash><commit_hash>/HEAD~ HEAD 比较提交之间的差异
git diff <branch_name><branch_name> 比较分支之间的差异
