git rm命令

本文介绍了gitrm命令用于从工作区和索引中删除文件的用法,强调了gitrm会记录删除操作并提交,而rm不记录。还提供了如何处理误删、批量删除以及撤销删除操作的示例。
摘要由CSDN通过智能技术生成

git rm命令用于从工作区和索引中删除文件。

简介

git rm [-f | --force] [-n] [-r] [--cached] [--ignore-unmatch] [--quiet] [--] <file>…

Shell

描述

从索引中删除文件,或从工作树和索引中删除文件。 git rm不会从您的工作目录中删除文件。 (没有任何选项只能从工作树中删除文件,并将其保留在索引中;)要删除的文件必须与分支的提示相同,并且在索引中不能对其内容进行更新,尽管可以使用-f选项覆盖(默认行为)。 当给出--cached时,暂存区内容必须与分支的提示或磁盘上的文件相匹配,从而仅将文件从索引中删除。

使用 git rm 来删除文件,同时还会将这个删除操作记录下来;而使用 rm 来删除文件,仅仅是删除了物理文件,没有将其从 git 的记录中剔除。

直观的来讲,git rm 删除过的文件,执行 git commit -m "commit message or mark" 提交时,会自动将删除该文件的操作提交上去。

而对于用 rm 命令直接删除的文件,执行 git commit -m "commit message or mark"提交时,则不会将删除该文件的操作提交上去。不过不要紧,即使你已经通过 rm 将某个文件删除掉了,也可以再通过 git rm 命令重新将该文件从 git 的记录中删除掉,
这样的话,在执行 git commit -m "commit message or mark" 以后,也能将这个删除操作提交上去。

如果之前不小心用 rm 命令删除了一大批文件呢?如此时用 git rm 逐个地再删除一次就显得相当卵痛了。可如下的方式做提交: git commit -am "commit message or mark"

示例

以下是一些示例 -

在git中我们可以通过git rm命令把一个文件删除,并把它从git的仓库管理系统中移除。但是注意最后要执行git commit才真正提交到git仓库。

示例1

删除text1.txt文件,并把它从git的仓库管理系统中移除。

git rm text1.txt

Shell

示例2

删除文件夹:mydir,并把它从git的仓库管理系统中移除。

git rm -r mydir

Shell

示例3


$ git add 10.txt
$ git add -i
           staged     unstaged path
  1:        +0/-0      nothing 10.txt
  2:        +0/-0      nothing branch/t.txt
  3:        +0/-0      nothing branch/t2.txt

*** Commands ***
  1: [s]tatus     2: [u]pdate     3: [r]evert     4: [a]dd untracked
  5: [p]atch      6: [d]iff       7: [q]uit       8: [h]elp
What now> 7
Bye.
$ git rm --cached 10.txt
rm '10.txt'
$ ls
10.txt  2  3.txt  5.txt  readme.txt
$ git add -i
           staged     unstaged path
  1:        +0/-0      nothing branch/t.txt
  2:        +0/-0      nothing branch/t2.txt
*** Commands ***
  1: [s]tatus     2: [u]pdate     3: [r]evert     4: [a]dd untracked
  5: [p]atch      6: [d]iff       7: [q]uit       8: [h]elp

Shell

在通过 git add 10.txt 命令把文件10.txt添加到索引库中后,又通过 git rm --cached 10.txt 把文件10.txt从git的索引库中移除,但是对文件10.txt本身并不进行任何操作。

另外对于已经被git rm删除掉(还没被提交)的文件或目录,如果想取消其操作的话,可以首先通过git add -i的子命令revert从索引库中把它们剔除,然后用git checkout <文件> 命令来达到取消的目。

示例4

$ git rm Documentation/\*.txt

Shell

Documentation目录及其任何子目录下的索引中删除所有.txt文件。

示例5

git rm -f git-*.sh

Shell

因为这个例子让shell扩展星号(即显式列出文件),它不会删除子目录中的文件,如:subdir/git-foo.sh文件不会被删除。

  • 12
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智慧浩海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值