前言:针对文件的撤销修改或者删除文件操作一般有以下几种情况:
1. 撤销文件修改
1.1 git restore – filename — 工作区文件改动未添加到暂存区
当修改后的文件还未放到暂存区,使用git restore -- filename
命令将暂存区的文件还原到工作区。
1.2 git checkout --staged filename — 文件添加到暂存区未提交到版本区
当修改后的文件已经提交到暂存区后,又在工作区做了修改。此时使用git restore --staged filename
命令先将版本库中的原文件添加到暂存区,再使用git restore -- filename
命令将暂存区文件恢复到工作区。
1.3 git reset --hard — 文件提交到版本区未推送到远程仓库
若修改后的文件已经推送到远程仓库,则之前的文件修改不能撤销。但若只是提交到本地仓库未提交到远程仓库,则还可以通过版本回退命令git reset --hard HEAD^
回退到上一个提交版本。
2. 删除文件操作
删除文件操作也要针对三个区分别看待:
2.1 git rm – filename — 删除工作区和暂存区文件
git rm -- filename
后面直接加上文件名参数,实际为删除工作区和暂存区的文件,因此如果想要删除保存为新版本就需要重新使用add
和commit
命令;若想要撤销修改,必须分为两步,第一步:把版本库中的最新版本文件撤销到暂存区,第二步:把暂存区中的文件撤销到工作区,才能最终实现撤销文件删除的操作。
如图使用git status
可以提醒,如果想要恢复暂存区的文件,使用git restore --staged filename
可以将版本库的文件恢复到暂存区。
执行完git restore --staged filename
后,使用git status
命令,会发现提示使用git restore -- filename
可以将暂存区中的文件恢复到工作区。
2.2 git rm --cached filename — 删除暂存区文件
只删除暂存区中的文件可以阻止系统对该文件的追踪,使用git rm --cached filename
删除暂存区中的文件,系统提示通过git restore --staged filename
恢复暂存区文件,不需要恢复工作区文件。