共计 4074 个字符,预计需要花费 11 分钟才能阅读完成。
导读 | 这篇文章主要为大家详细介绍了 Git 基础学习中的文件删除操作命令,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以了解一下 |
在 Git 工作目录中要删除某个文件,首先要清楚该文件所处的状态。
若要是该文件未被 Git 管理,在工作区直接进行删除即可。(不演示)
但是,若该文件已经经过多次 git add 与 git commit 操作后,就必须要从已跟踪文件清单中删除(确切地说,是在暂存区中删除),然后提交。
可以用 git rm 命令完成此项工作,并连带从工作目录中删除指定的文件,这样文件之后就不会出现在未跟踪文件清单中了。
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 ..." to unstage)
deleted: delete.html # 已删除
Untracked files:
(use "git add ..." 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 文件已恢复。
所谓完全删除文件,指的是将工作区、暂存区和本地库中的指定文件一次性都删除。
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 ..." 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 文件已经被彻底删除了。
![post-qrcode](https://www.xgss.net/wp-content/uploads/2023/07/二维码-微信公众号256x256.jpg)