如果可以重来,该有多好,显然生活中你做错了什么就不能再重来了,然而在git中,你可以肆意的重来,想怎么回退就怎么回退,清理痕迹不让别人发现。
1、git reset命令简介
你的本地仓库由 git 维护的三棵“树”组成。第一个是你的 工作目录,它持有实际文件;第二个是 缓存区(Index),它像个缓存区域,临时保存你的改动;最后是 HEAD,指向你最近一次提交后的结果。
-
git reset --soft commit_Id
将HEAD指向给定提交。索引和工作目录的内容保持不变。
-
git reset --mixed commit_Id
将HEAD指向给定提交。索引内容也跟着改变以符合给定提交的树结构,但是工作目录中的内容保持不变。
-
git reset --hard commit_Id
将HEAD指向给定提交。索引的内容也跟和改变以符合给定提交树结构,此外,工作目录的内容也随之改变以反映给定提交树的状态。
**git reset选项影响: **
选 项 | HEAD | 索 引 | 工 作 目 录 |
---|---|---|---|
--soft | 是 | 否 | 否 |
--mixed | 是 | 是 | 否 |
--hard | 是 | 是 | 是 |
2、本地代码回退,远程代码也需要回退
//讲本地的代码回退到某个历史commit
git reset --hard ba81bb598b95baa76811d6080a1b92d99c8404ec
//远程提交回退----
git push origin HEAD --force
git push -f//这个也可以
ref: