Git文件删除操作
繁华似锦Fighting 人气:01、删除文件说明
在Git工作目录中要删除某个文件,首先要清楚该文件所处的状态。
若要是该文件未被Git管理,在工作区直接进行删除即可。(不演示)
但是,若该文件已经经过多次git add
与git commit
操作后,就必须要从已跟踪文件清单中删除(确切地说,是在暂存区中删除),然后提交。
可以用git rm
命令完成此项工作,并连带从工作目录中删除指定的文件,这样文件之后就不会出现在未跟踪文件清单中了。
2、删除文件操作
(1)仅删除暂存区的文件
1)创建文件,提交到版本库
# 1.创建delete.html文件 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ echo "delete file test" >> delete.html # 2.把delete.html文件提交到本地版本库中 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git add delete.html warning: LF will be replaced by CRLF in delete.html. The file will have its original line endings in your working directory L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git commit -m '新增delete.html文件' [master 262df2c] 新增delete.html文件 1 file changed, 1 insertion(+) create mode 100644 delete.html L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git status On branch master nothing to commit, working tree clean
2)查看暂存区和本地版本库中的文件列表
# 1.查看暂存区中的文件列表 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git ls-files delete.html readme.txt # 2.查看本地版本库中的文件列表 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git ls-files --with-tree=HEAD delete.html readme.txt
我们可以看到暂存区和本地版本库中都是delete.html
和readme.txt
两个文件。
说明命令:git ls-files --with-tree=HEAD
该命令实际上查看的是,当前工作分支上,HEAD指针所指向的,时间节点中的文件列表。若查看上一个时间节点中的文件列表,则可将HEAD替换为HEAD^
,当然也可以使用HEAD~n
。
3)仅删除暂存区中delete.html文件
使用git rm --cached
命令,该命令可以仅删除暂存区中的指定文件。
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git rm --cached delete.html rm 'delete.html'
4)再次查看暂存区和本地版本库中的文件列表
# 1.查看暂存区中的文件列表 $ git ls-files readme.txt # 2.查看本地版本库中的文件列表 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git ls-files --with-tree=HEAD delete.html readme.txt
我们可以看到暂存区中已经没有了delete.html
文件,但本地版本库中还存在。
此时,通过git commit
命令进行提交,可以将本地库中的文件文件也删除。
5)恢复被删除delete.html文件
此时工作区中的delete.html
文件还没有被删除,如下:
# 也可以使用ll命令查看 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git status On branch master Changes to be committed: (use "git restore --staged <file>..." to unstage) deleted: delete.html # 已删除 Untracked files: (use "git add <file>..." to include in what will be committed) delete.html # 未被追踪
此时最简单的恢复方式是,将delete.html
文件git add
到暂存区,再git commit
提交到本地版本库中。(我的理解是,把delete.html
文件添加到暂存区,这一步就让delete.html
文件恢复了,因为此时工作区,暂存区,版本库中的delete.html
文件都是一样的。在执行git commit
提交,也没有什么意思了。大家可以自己也思考一下。)
下面我们使用git reset
命令进行恢复。
执行命令git reset HEAD
,即执行的完全命令为git reset --mixed HEAD
。
# 1.版本回退 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git reset HEAD # 2.查看暂存区中的文件列表 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git ls-files delete.html readme.txt L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git status On branch master nothing to commit, working tree clean
可以看到暂存区中的delete.html
文件已恢复。
(2)完全删除文件
所谓完全删除文件,指的是将工作区、暂存区和本地库中的指定文件一次性都删除。
1)删除delete.html文件
使用命令git rm filename
。
# 接上面示例 # 1.完全删除delete.html文件 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git rm delete.html rm 'delete.html' # 2.查看暂存区中的文件列表 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git ls-files readme.txt # 3.查看本地版本库中的文件列表 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git ls-files --with-tree=HEAD delete.html readme.txt # 4.查看工作区中的文件列表 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ ll total 1 -rw-r--r-- 1 L 197121 80 4月 15 17:34 readme.txt # 5.查看工作目录中的文件状态 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git status On branch master Changes to be committed: (use "git restore --staged <file>..." to unstage) deleted: delete.html
我们可以工作区和暂存区中的delete.html
文件都已经被删除,但是本地版本库中的delete.html
文件还存在。
我们查看了当前工作目录中的文件状态,发现delete.html
文件是已删除状态。
因此若要将本地版本库中的delete.html
文件删除,直接commit
提交即可。
# 提交操作 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git commit -m '删除 delete.html文件' [master fdcb771] 删除 delete.html文件 1 file changed, 1 deletion(-) delete mode 100644 delete.html L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git status On branch master nothing to commit, working tree clean # 查看工作目录文件 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ ll total 1 -rw-r--r-- 1 L 197121 80 4月 15 17:34 readme.txt
说明delete.html
文件已经被彻底删除了。
3、本文用到的命令总结
git ls-files
:查看暂存区中的文件列表。
git ls-files --with-tree=HEAD
:查看本地版本库中的文件列表。(文中有使用说明)
git rm --cached filename
:仅删除暂存区中的文件。
git rm filename
:删除工作区和暂存区的文件。
加载全部内容