Git_Reset
HEAD 上次提交的快照
INDEX 预期的下一次提交(暂存区)
Working Directory 工作区
为了更清晰地说明问题:
- 我们假设现在提交了V1、V2、V3三版文件,并且现在三个区中都是V3
~表示主目录 也可以是文件名
先回顾一下Instruction篇提到的有关reset和checkout撤销操作:
1. 取消暂存文件:
1 | git reset HEAD [file] |
2. 想要撤销修改,将文件还原成上次提交的样子
1 | git checkout --[file] |
接下来进一步学习有关撤销的操作和原理:
git reset --soft HEAD~
Head指向上一次提交的版本(V2)
移动HEAD整个分支的指向
(本质上是撤销了上一次git commit的命令)
git reset [--mixed] HEAD~
相当于以下三点:
- 撤销暂存的东西
- 暂存区变为V2
- 撤销
git add
git reset -hard HEAD~
- 强制覆盖目录中的所有文件
- 工作区的文件也变为V2
git reset file.txt
将file.txt从HEAD复制到索引中
git reset eb43 --file.txt
eb43就是V1
相当于三步:
- 将工作目录的文件恢复到V1
- 运行
git add添加到索引 - 再将工作区恢复到V3
reset也可以接受—patch,一块块取消暂存内容。
git checkout [branch]
只移动HEAD自身
checkout也接受—patch
参考文献:Git重置揭秘
陈山!!![星星眼]cover放小范大人,里面就放一张陈山吧~
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 PlutoC!


