Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >[Git] 文件删除

[Git] 文件删除

作者头像
DevKevin
发布于 2025-06-11 11:39:27
发布于 2025-06-11 11:39:27
7700
代码可运行
举报
文章被收录于专栏:Base_CDNKevinBase_CDNKevin
运行总次数:0
代码可运行
在 Git 里,“删除文件”也被看作是一种 修改,需要被版本控制系统追踪和记录。
告诉 Git 你删了什么

如果你只是在你的操作系统文件管理器里,或者在终端里使用 rm 命令删除了一个文件,Git 是会立刻察觉到的。

场景: 假设你的项目里有一个文件 file5,它已经被 Git 跟踪(也就是说,你之前 addcommit 过它)。现在你直接用系统的删除命令把它删了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 确保 file5 存在于工作区
hyb@139-159-150-152:~/gitcode$ ls
file1 file2 file3 file4 file5 ReadMe

# 使用系统命令删除 file5
hyb@139-159-150-152:~/gitcode$ rm file5

此时,file5 已经从你的工作区消失了。

查看 Git 状态: Git 立刻会发现工作区和它记录的状态不一致了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
hyb@139-159-150-152:~/gitcode$ git status
On branch master
Changes not staged for commit: # 未暂存的修改
  (use "git add/rm <file>..." to update what will be committed) # Git 提示你可以用 git add 或 git rm 来更新暂存区
  (use "git restore <file>..." to discard changes in working directory) # Git 提示你可以用 restore 恢复文件
        deleted: file5 # Git 发现 file5 被删除了!

no changes added to commit # 暂存区没有改动

git status 告诉你,file5 被删除了,而且这个删除操作是“未暂存的”(Changes not staged for commit)。这就像你从办公桌上拿走了文件,但还没告诉仓库管理员(Git)。

此时,Git 版本库中(那个 .git 文件夹里)的历史版本是包含 file5 的,暂存区也是基于上一次提交的状态,认为应该有 file5。只有你的工作区没有 file5 了。

遇到这种情况,通常有两种可能:

  1. 不小心删错了,想恢复这个文件。
  2. 你确实有意要从项目和版本库中删除这个文件。
如果是不小心删错了文件(只用了 rm 删除)

这是第二种情况,文件只在工作区被删了。别担心,Git 的强大之处就在于它记录了历史!只要这个文件在你的版本库中存在过(至少在最近一次提交中存在),你就可以轻松恢复它。

命令: git checkout -- [文件名]

这个命令我们刚刚在“撤销修改”中学习过,它能用暂存区或版本库中的文件版本覆盖工作区的文件。在这里,它会用版本库中最新提交的 file5 版本,把它复制回你的工作区。

操作演示:

我们接上面的例子,file5 已经被 rm 删除了,git status 显示 deleted: file5

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 恢复误删的 file5
hyb@139-159-150-152:~/gitcode$ git checkout -- file5

# 再次查看文件列表,file5 回来了!
hyb@139-159-150-152:~/gitcode$ ls
file1 file2 file3 file4 file5 ReadMe

# 查看 Git 状态,工作区又干净了
hyb@139-159-150-152:~/gitcode$ git status
On branch master
nothing to commit, working tree clean

成功恢复了误删的文件!这再次体现了 Git 记录历史的价值。

如果确实要从版本库中删除该文件(有意删除)

这是第一种情况,你确实想把这个文件从项目中移除,并且要把这个“删除”操作记录到版本历史中。仅仅使用 rm 只删除了工作区的文件,Git 并不知道你是有意删除,它只是标记为“工作区文件不见了”。

要告诉 Git 你是有意删除,并且要将这个删除操作添加到暂存区,以便下次提交时记录这个删除,你需要使用 git rm 命令。

命令: git rm [文件名]

它的原理: git rm [文件名] 命令做了两件事:

  1. 删除工作区的文件: 它会执行类似系统 rm 的操作,将指定文件从你的项目文件夹里删除。
  2. 将删除操作添加到暂存区: 它会自动将这个文件的“删除”操作暂存起来,标记为待提交的改动。这就像你在暂存区的清单里写上:“下次提交时,请把 file5 这个文件删除掉。”

操作演示:

假设 file5 还在工作区,并且已经被 Git 跟踪。现在我们想正式地从项目和版本库中删除它。

  1. 使用 git rm 命令删除文件。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 使用 git rm 删除 file5
hyb@139-159-150-152:~/gitcode$ git rm file5
rm 'file5' # Git 会反馈它删除了哪个文件

此时,file5 已经从你的工作区消失了。

  1. 查看 git status 状态:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
hyb@139-159-150-152:~/gitcode$ git status
On branch master
Changes to be committed: # 待提交的修改
  (use "git restore --staged <file>..." to unstage) # Git 提示可以用 restore --staged 撤销暂存
        deleted: file5 # 看!删除操作已经在暂存区里了!

git status 显示 file5 处于 “Changes to be committed” 区域下的 deleted 状态。这说明 Git 已经知道你想要删除这个文件,并且已经把这个“删除”的意图记录到了暂存区,准备下一次提交时执行。

  1. 提交删除操作: 最后一步,就像提交任何其他修改一样,你需要 commit 暂存区的删除操作,将它永久记录到版本库中。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 提交暂存区的删除操作
hyb@139-159-150-152:~/gitcode$ git commit -m"deleted file5"
[master 5476bde] deleted file5 # 生成新的提交
 1 file changed, 0 insertions(+), 0 deletions(-) # 本次提交改动了 1 个文件,没有增删行(因为是删除)
 delete mode 100644 file5 # 看!Git 记录了这个文件的删除模式

提交成功!这个提交就记录了“在此时此刻,我删除了 file5 文件”。

  1. 再次查看 git status
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
hyb@139-159-150-152:~/gitcode$ git status
On branch master
nothing to commit, working tree clean # 工作区和暂存区又干净了

现在,file5 文件已经从你的工作区移除了,并且在 Git 的版本历史中,从这个提交开始,这个文件就不存在了。但是,在这个提交之前的历史版本中,file5 仍然是存在的,你随时可以回退到之前的版本或者单独拿出之前版本的 file5 文件。

总结:如何处理删除文件
  • 如果你只是在工作区删除了一个已被 Git 跟踪的文件(比如用 rm),git status 会显示为未暂存的删除。
    • 恢复它:使用 git checkout -- [文件名]
    • 确认删除并提交:先使用 git add [文件名]git rm [文件名] (推荐 git rm,一步到位) 将删除操作暂存,然后 git commit
  • 如果你想正式地将一个文件从项目和版本库中删除,使用 git rm [文件名] 命令。它会删除工作区文件并暂存删除操作,然后你需要 git commit 来记录这次删除。

理解了这两种删除场景及其处理方法,你就能更自如地管理文件,避免误操作的烦恼。删除文件在 Git 里并不可怕,因为 Git 强大的历史记录功能让大部分操作都是可逆的(尤其是在本地仓库)。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-06-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
[Git] 认识 Git 的三大区域 && 文件的修改和提交
要理解 Git 的工作流程,必须先搞清楚它在哪几个地方“存放”和“处理”你的文件。 Git 主要涉及以下三个区域:
DevKevin
2025/05/30
1390
[Git] 认识 Git 的三大区域 && 文件的修改和提交
【Git】初识Git && Git基本操作详解
​ 另外还要明白,我们 平时使用的 gitee、github 等平台,其实只是基于 git 的托管平台,相当于远程仓库,要分清楚!
利刃大大
2025/02/02
2570
【Git】初识Git && Git基本操作详解
[Git] 如何将已经执行的修改操作撤销
在使用 Git 工作时,经常会遇到这样的情况:写了一段代码,或者对文件做了一些修改,但后来发现这些改动不好,想回到之前的状态。根据你的改动所处的“阶段”(在工作区、暂存区还是已经提交到了版本库),撤销修改的方法是不同的。
DevKevin
2025/05/30
1580
[Git] 如何将已经执行的修改操作撤销
[Git] 配置 Git
在掌握了本地和远程的基本操作之后,我们来学习一些 Git 的 配置技巧,让使用更加顺畅和个性化。
DevKevin
2025/06/12
1230
[Git] 配置 Git
Git实用指南:忽略文件、命令别名、版本控制、撤销修改与标签管理
在日常开发中,我们有些文件不想或者不应该提交到远端,比如保存了数据库密码的配置文件,那怎么让Git知道呢?在Git工作区的根目录下创建⼀个特殊的 .gitignore 文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件了。 不需要从头写 .gitignore 文件,gitee在创建仓库时就可以为我们生成,不过需要我们主动勾选⼀下:
用户11316056
2025/01/21
2610
Git实用指南:忽略文件、命令别名、版本控制、撤销修改与标签管理
GIT学习----第七节:删除文件
1.如果用rm命令删除文件,想要恢复,如何处理? 2.如果用git rm命令删除文件,想要恢复,如何处理? 3.如果彻底删除版本库的该文件,如何处理?
Rattenking
2021/01/30
1.2K0
[Git] 如何进行版本回退
版本控制系统最重要的能力之一,就是能够轻松地在项目的不同历史版本之间切换。有时,你可能发现最近的修改引入了严重问题,或者需要回到之前的某个节点重新开始。这时,“版本回退”功能就派上用场了。
DevKevin
2025/05/30
2450
[Git] 如何进行版本回退
Git 分布式版本控制 -- (1、基本使用)
一个很适合入门的教程。即使你不知道什么叫版本控制,看完也应该能会使用Git了。笔记以后再做吧。
lpe234
2020/07/27
3160
开源世界大冒险 | 第 4 期:Git 基础
在上一章中我们说到GitHub 并不等同于 Git,在这一篇文章中我们就来了解 Git 和它的基本使用。
江不知
2019/12/11
4650
开源世界大冒险 | 第 4 期:Git 基础
Git之删除文件 git rm 的基本使用
小提示:先手动删除文件,然后使用git rm <file>和git add<file>效果是一样的。
兮动人
2021/06/11
1.5K0
git 入门教程之删除文件 原
回忆一下文件的常见操作,新增文件,修改文件,删除文件等,新增和修改文件都单独讨论过,现在我们来研究一下如何删除文件.
雪之梦技术驿站
2019/04/03
7190
Git的基础操作
其中--global 是⼀个可选项。如果使用了该选项,表示这台机器上所有的Git仓库都会使用这个 配置。如果你希望在不同仓库中使用不同的name或 e-mail ,可以不要--global 选项,但要 注意的是,执行命令时必须要在仓库里。
二肥是只大懒蓝猫
2024/07/19
1090
Git的基础操作
git入门篇(4)--版本穿梭
上一篇主要针对使用git add和git commit两个指令提交文件到本地版本库做了详细的介绍,其实提交文件到版本库无非就是两个步骤,先将文件添加到暂存区,所有要提交的文件全部添加完毕,统一提交到版本库。那我们每一次提交都会生成一个不同的版本,我们如何对这些不同的版本进行管理呢?本篇文章主要谈谈版本的管理,比如版本回滚,修改的管理删除等。
创译科技
2020/01/15
5800
Git基本操作(超详细)
.git ⽬录是Git来跟踪管理仓库的,不要⼿动修改这个⽬录⾥⾯的⽂件,不然改乱了,就把Git仓库给破坏了
南桥
2024/02/20
1.2K0
Git基本操作(超详细)
【Git#1】初识 git(配置 & 基本认识 & 文件操作)
在工作或学习时经常遇到这样的情况:我们在编写各种文档时,为了防止文档丢失,更改失误,失误后能恢复到原来的版本,不得不复制出一个副本,比如:
IsLand1314
2025/04/19
3260
【Git#1】初识 git(配置 & 基本认识 & 文件操作)
【git#4】分支管理 -- 知识补充
假如我们现在正在 dev2 分支上进行开发,开发到一半,突然发现 master 分支上面有 bug,需要解决。
IsLand1314
2025/04/26
1250
【git#4】分支管理 -- 知识补充
Git 分支管理与多人协作实战指南
分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习 C++的时候,另一个你正在另一个平行宇宙里努力学习 JAVA。 如果两个平行宇宙互不干扰,那对现在的你也没啥影响。不过,在某个时间点,两个平行宇宙合并 了,结果,你既学会了 C++ 又学会了 JAVA!
用户11316056
2025/01/23
1680
Git 分支管理与多人协作实战指南
Git-基本操作(同SVN)
 版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
翎野君
2023/05/12
2710
Git-基本操作(同SVN)
Git在码云上的使用指南:从安装到推送远程仓库
本文介绍了如何使用git在码云上创建远程仓库,并将本地的代码push到码云的远程仓库上。
用户11316056
2024/11/19
3610
Git在码云上的使用指南:从安装到推送远程仓库
Git分布式版本控制器安装注意点及其常用命令
将git按照默认选项下载安装后,打开git bach版面进行git命令行操作(记住在安装的过程中文件夹中不能存在中文): 注:Windows下,路径名不要包含中文,因为Git对中文支持不给力,可能会存在报错。Git下载地址
追逐时光者
2019/08/28
4070
相关推荐
[Git] 认识 Git 的三大区域 && 文件的修改和提交
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验