git 常用操作
1. 撤销 git add
撤销所有的已经 add 的文件
git reset HEAD -- .
撤销某个文件或文件夹
git reset HEAD -- filename
2. 撤销 git commit
git reset --soft HEAD^
HEAD^的意思是上一个版本,也可以写成HEAD~1
如果你进行了2次commit,想都撤回,可以使用HEAD~2
其他参数解析:
- --soft
不删除工作空间改动代码,撤销commit,不撤销git add . - --mixed【默认】
不删除工作空间改动代码,撤销commit,并且撤销git add .
这个为默认参数, git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。 - -- hard
删除工作空间改动代码,撤销commit,并且撤销git add .
补充:如果该仓库到目前为止只有commit过一次代码,则会报错:
$ git reset HEAD^
fatal: ambiguous argument 'HEAD^': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
3. git log 查看简洁的提交记录
# 只显示提交 ID 和 提交信息
git log --oneline
4. git reset
- 工作区:ls 查看
- 暂存区:git ls-files
-
soft:git reset --soft 版本ID
v1 v2 v3(这里我们回退到 v2)
使用 git status 查看仓库状态:提示我们 files3 是一个新文件,因为 file3 这个文件是在 v3 版本才添加的,所以对于 v2 来说,这个 file3 就是一个新文件,这时我们就可以修改一下 file3 的内容,然后重新添加暂存和提交一下就可以了 -
hard:
git reset --hard HEAD^
ls:file3 消失不见(工作区被删)
git ls-files 暂存区中也不见了 -
mixed(默认):git reset HEAD^
工作区存在
暂存区不见
5. git 中所有参数都是可以回溯的
git reflog
git reset --hard 版本号
6. git diff 查看差异
默认:比较 工作区和暂存区 之间的差异内容
git diff HEAD:比较 工作区 和 版本库 之间的差异
git diff -cached:比较 暂存区 和 版本库 之间的差异
git diff 版本1 版本2:比较 2个版本的 差异内容