git当中, 有两个指令可以产生回退的效果.
第一个是, git reset --hard HEAD^
第二个是, git restore -- readme.txt
下面, 挨个来说.
1. git reset --hard HEAD^
该命令的作用是, 重置它影响区域下的所有提交效果.
即, 它所影响的区域, 全部回退, 撤销提交, 取消修改.
该命令影响的区域有三个: 本地仓库, 暂存区, 工作区.
工作区的修改, 工作区提交到暂存区的代码, 暂存区提交到本地仓库的代码, 全部都会回退.
现在执行 git reset --hard HEAD^
实验表明.
工作区中的修改, 可以回退;
工作区 提交到 暂存区, 可以回退;
暂存区 提交到 本地仓库, 可以回退;
如果是 工作区, 暂存区, 本地仓库 这三个区域的 回退操作, 都可以执行这条命令.
但是 远程仓库 这条命令它管不着.
补充:
git reset --hard HEAD^ 表示回退1次.
git reset --hard HEAD~2 表示回退2次.
git reset --hard HEAD~3 表示回退3次.
你想回退几次, 就把它改成你想要的数字.
2. git restore -- 文件名
该命令的作用是, 恢复工作目录中的指定文件到最后一次提交状态.
即, 取消你工作区的修改.
它能力很小, 只能影响工作区, 但凡代码被提交到暂存区, 它都不能回退.
接下来, 执行 git restore -- 文件名
结果下图可见.
在看看文件的内容.
实验表明,
该命令, 可以回退工作区的修改.
接下来, 我们看它能不能回退提交到暂存区的代码.
现在, 执行 git restore -- 文件名
看它能不能回退 提交到暂存区的代码.
实验表明.
对于已经提交到暂存区的代码, 该命令是无能为力的.