在项目中我们也经常会使用到撤销操作 使用这一节我们就讲一讲Git的撤销操作
撤销操作主要有如下几种
git commit --amend 撤销上一次提交 并讲暂存区文件重新提交
git checkout -- <file> 拉取暂存区文件 并将其替换成工作区文件
git reset HEAD -- <file> 拉取最近一次提交到版本库的文件到暂存区 改操作不影响工作区
git reset HEAD -- <file>
该操作 可以 拉取最近一次提交到版本库的文件到暂存区 并且该操作不影响工作区
简单的来说 就是可以帮我们从版本库中 拉取文件到 暂存区 当我们把工作区的某个文件弄乱了 我们就可以使用该命令 把版本库中的那个文件拉到暂存区 然后在拉回工作区
举个例子 我们的项目目录 和Git版本库提交日志 如下图
我们现在在 version 5.0版本 5.0版本readme.md 里面有 hello world ! 这个字符串 而我们需要 readme.md 里面是空白的 我们只记得 version 1.0 里面readme.md 是空白的 所以我们现在需要把 version 1.0 里面的 readme.md 拉到我们的工作区
这时我们就不得不分析一下 git reset HEAD -- <file>
这个命令的各个参数了
filename
一看就知道 是我们要拉取的文件名
HEAD
可以理解为一个游标 一直指向当前我们所在版本库的地址 就是我们当前所在版本库的头指针
当然 我们也可以不使用HEAD 可以直接使用版本库的地址 版本库地址 可以用 git log
命令打印出来
如下图 version 1.0 的版本库地址为 f0a1684
我们执行 git reset f0a1684 -- readme.md
结果如下图
使用 git status
参看仓库状态 如下图
我们发现 现在暂存区里的文件 和 工作区 当前版本库的 都不一样 这说明我们已经成功的把 version 1.0 中 空的 readme.md 拉取到了 暂存区 因为工作去和当前版本库里的 readme.md 里面都应该有 hello world !
我们在使用 git checkout -- <file>
命令来把 暂存区文件拉到工作区
工作区 readme.md 现在变成空了 拉去成功 说明我们的 git reset HEAD -- <file>
命令执行成功