您现在的位置是:首页 > 编程语言学习 > 前端编程语言 > 文章正文 前端编程语言

Git基础学习之文件删除操作命令详解

2022-10-19 11:33:16 前端编程语言

简介Git基础学习之文件删除操作命令详解1、删除文件说明在Git工作目录中要删除某个文件,首先要清楚该文件所处的状态。若要是该文件未被Git管理...

Git基础学习之文件删除操作命令详解

1、删除文件说明

在Git工作目录中要删除某个文件,首先要清楚该文件所处的状态。

若要是该文件未被Git管理,在工作区直接进行删除即可。(不演示)

但是,若该文件已经经过多次git addgit commit操作后,就必须要从已跟踪文件清单中删除(确切地说,是在暂存区中删除),然后提交。

可以用git rm命令完成此项工作,并连带从工作目录中删除指定的文件,这样文件之后就不会出现在未跟踪文件清单中了。

2、删除文件操作

(1)仅删除暂存区的文件

1)创建文件,提交到版本库

  1. # 1.创建delete.html文件 
  2. L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) 
  3. $ echo "delete file test" >> delete.html 
  4.  
  5. # 2.把delete.html文件提交到本地版本库中 
  6. L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) 
  7. $ git add delete.html 
  8. warning: LF will be replaced by CRLF in delete.html. 
  9. The file will have its original line endings in your working directory 
  10.  
  11. L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) 
  12. $ git commit -m '新增delete.html文件' 
  13. [master 262df2c] 新增delete.html文件 
  14.  1 file changed, 1 insertion(+) 
  15.  create mode 100644 delete.html 
  16.   
  17. L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) 
  18. $ git status 
  19. On branch master 
  20. nothing to commit, working tree clean 

2)查看暂存区和本地版本库中的文件列表

  1. # 1.查看暂存区中的文件列表 
  2. L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) 
  3. $ git ls-files 
  4. delete.html 
  5. readme.txt 
  6.  
  7. # 2.查看本地版本库中的文件列表 
  8. L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) 
  9. $ git ls-files --with-tree=HEAD 
  10. delete.html 
  11. readme.txt 

我们可以看到暂存区和本地版本库中都是delete.htmlreadme.txt两个文件。

说明命令:git ls-files --with-tree=HEAD

该命令实际上查看的是,当前工作分支上,HEAD指针所指向的,时间节点中的文件列表。若查看上一个时间节点中的文件列表,则可将HEAD替换为HEAD^,当然也可以使用HEAD~n

3)仅删除暂存区中delete.html文件

使用git rm --cached命令,该命令可以仅删除暂存区中的指定文件。

  1. L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) 
  2. $ git rm --cached delete.html 
  3. rm 'delete.html' 

4)再次查看暂存区和本地版本库中的文件列表

  1. # 1.查看暂存区中的文件列表 
  2. $ git ls-files 
  3. readme.txt 
  4.  
  5. # 2.查看本地版本库中的文件列表 
  6. L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) 
  7. $ git ls-files --with-tree=HEAD 
  8. delete.html 
  9. readme.txt 

我们可以看到暂存区中已经没有了delete.html文件,但本地版本库中还存在。

此时,通过git commit命令进行提交,可以将本地库中的文件文件也删除。

5)恢复被删除delete.html文件

此时工作区中的delete.html文件还没有被删除,如下:

  1. # 也可以使用ll命令查看 
  2. L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) 
  3. $ git status 
  4. On branch master 
  5. Changes to be committed: 
  6.   (use "git restore --staged <file>..." to unstage) 
  7. deleted:delete.html # 已删除 
  8.  
  9. Untracked files: 
  10.   (use "git add <file>..." to include in what will be committed) 
  11. 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. # 1.版本回退 
  2. L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) 
  3. $ git reset HEAD 
  4.  
  5. # 2.查看暂存区中的文件列表 
  6. L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) 
  7. $ git ls-files 
  8. delete.html 
  9. readme.txt 
  10.  
  11. L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) 
  12. $ git status 
  13. On branch master 
  14. nothing to commit, working tree clean 

可以看到暂存区中的delete.html文件已恢复。

(2)完全删除文件

所谓完全删除文件,指的是将工作区、暂存区和本地库中的指定文件一次性都删除。

1)删除delete.html文件

使用命令git rm filename

  1. # 接上面示例 
  2. # 1.完全删除delete.html文件 
  3. L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) 
  4. $ git rm delete.html 
  5. rm 'delete.html' 
  6.  
  7. # 2.查看暂存区中的文件列表 
  8. L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) 
  9. $ git ls-files 
  10. readme.txt 
  11.  
  12. # 3.查看本地版本库中的文件列表 
  13. L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) 
  14. $ git ls-files --with-tree=HEAD 
  15. delete.html 
  16. readme.txt 
  17.  
  18. # 4.查看工作区中的文件列表 
  19. L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) 
  20. $ ll 
  21. total 1 
  22. -rw-r--r-- 1 L 197121 80  4月 15 17:34 readme.txt 
  23.  
  24. # 5.查看工作目录中的文件状态 
  25. L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) 
  26. $ git status 
  27. On branch master 
  28. Changes to be committed: 
  29.   (use "git restore --staged <file>..." to unstage) 
  30. deleted:delete.html 

我们可以工作区和暂存区中的delete.html文件都已经被删除,但是本地版本库中的delete.html文件还存在。

我们查看了当前工作目录中的文件状态,发现delete.html文件是已删除状态。

因此若要将本地版本库中的delete.html文件删除,直接commit提交即可。


  1. # 提交操作 
  2. L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) 
  3. $ git commit -m '删除 delete.html文件' 
  4. [master fdcb771] 删除 delete.html文件 
  5.  1 file changed, 1 deletion(-) 
  6.  delete mode 100644 delete.html 
  7.  
  8. L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) 
  9. $ git status 
  10. On branch master 
  11. nothing to commit, working tree clean 
  12.  
  13. # 查看工作目录文件 
  14. L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) 
  15. $ ll 
  16. total 1 
  17. -rw-r--r-- 1 L 197121 80  4月 15 17:34 readme.txt 
  18. 说明delete.html文件已经被彻底删除了。 

 

3、本文用到的命令总结

  1. git ls-files:查看暂存区中的文件列表。 
  2.  
  3. git ls-files --with-tree=HEAD:查看本地版本库中的文件列表。(文中有使用说明) 
  4.  
  5. git rm --cached filename:仅删除暂存区中的文件。 
  6.  
  7. git rm filename:删除工作区和暂存区的文件。 

 

Git

相关文章

站点信息