Git仓库有四个部分:工作区、暂存区、本地仓库(commit历史)、远程仓库
- 工作区: 用户当前编辑的内容 是在工作区,通过 git add 将工作区内容提交到 暂存区;
- 暂存区: git add 之后的修改保存在 暂存区,暂存区内容 通过 git commit 提交到 本地仓库;
- 本地仓库: git commit 后的内容存储在本地仓库,在这里可以通过 git log 查看 commit 历史记录,本地仓库内容 通过 git push 提交到远程仓库
- 远程仓库: git push将本地仓库的修改,推送到远程仓库
一、撤销 git add 后的内容:
1. git checkout [file] : 将暂存区的指定文件,恢复到工作区 (本地修改内容会被 暂存区内容替换)
示例:
先新建 test.js 内容如下:
// test.js
let desc = '这是测试内容';
先使用 git status 查看本地修改:
可以看到有一个新建文件 test.js,我们使用 git add 将它添加到 缓存区:
接下来我们将 test.js 内容更改为:
// test.js
let desc = '111111';
使用 git status 查看:
接下来使用 git checkout test.js 恢复到工作区:
此时,test.js 内容已恢复为:
// test.js
let desc = '这是测试内容';
2. git checkout [commit] [file]: 恢复某个commit的指定文件到暂存区和工作区
3. git checkout . :恢复暂存区的所有文件到工作区
二、撤销 git commit 后的内容:
1. git reset [file]:
重置暂存区指定文件,与上一次commit保持一致,但工作区不变
2. git reset --mixed:
不删除工作空间改动代码,撤销commit,并且撤销git add 操作
这个为默认参数,git reset --mixed 和 git reset 效果是一样的
3. git reset --soft:
不删除工作空间改动代码,撤销commit,不撤销git add
4. git reset --hard: 重置暂存区与工作区,与上一次commit保持一致
删除工作空间改动代码,撤销commit,撤销git add;