git reset
git reset [--soft | --mixed | --hard] [HEAD]
--mixed
重置 HEAD 和索引 (默认,可以不用带该参数)
--soft
仅重置 HEAD
--hard
重置 HEAD, 索引和工作区(注意:使用--hard
时,请确保工作区已提交或备份,否则会销毁工作区数据无法恢复)
::回退到上一个版本
git reset –hard HEAD~1
::回退到指定版本
git reset –hard bae128
::将本地的状态回退到和远程的一样
git reset --hard origin/master
HEAD 说明:
HEAD
表示当前版本HEAD^
上一个版本HEAD^^
上上一个版本HEAD^^^
上上上一个版本- 以此类推...
可以使用 ~
数字表示
HEAD~0
表示当前版本HEAD~1
上一个版本HEAD~2
上上一个版本HEAD~3
上上上一个版本- 以此类推...
取消暂存某个文件:
:: 执行后可以使用 git status 查看,git add -A 再次添加到暂存
git reset HEAD~1 e/e.txt
压缩提交历史:
git log --oneline
f95d7bd (HEAD -> master) e.txt v3
3b36804 e.txt v2
7696faf e.txt v1
7367670 create e.txt
...
git reset --soft 7367670
git log --oneline
7367670 (HEAD -> master) create e.txt
...
git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: e/e.txt
git commit -m "e.txt v1,v2,v3"
[master 52b6c18] e.txt v1,v2,v3
1 file changed, 1 insertion(+)
git log --oneline
52b6c18 (HEAD -> master) e.txt v1,v2,v3
...
更多参考:
Git-工具-重置揭密
git reset 命令