Git rm
git rm 命令用于从 index 和工作树中移除特定文件。通过这样做,我们将文件从项目中移除,并将其移除操作暂存到下一次提交中。
git rm 命令从 Git index 中移除文件,并可选地从工作目录中移除。
要仅从工作目录中移除文件(不影响 index),请使用其他命令,如 /bin/rm。
默认情况下,git rm 要求文件与分支的最新提交匹配,使用 -f 选项强制移除不匹配的文件。
使用 git rm --cached 仅从 index 中移除文件,同时保留在工作目录中。
启用 sparse-checkouts 时,git rm 仅影响 sparse-checkout 模式中的文件。
语法
git rm <file>
git rm 用于移除由 <file> 指定的文件。
使用目录名配合 -r 选项,可以删除目录及其所有子目录中的所有文件。
虽然 git rm 'd*' 仅针对给定目录内的文件,但文件 globbing 会跨越目录边界匹配,因此 git rm 'd*' 可以移除多个目录中的文件。
选项
git rm 命令具有以下选项:
-f
--force
git rm -f <file>
使用 git rm 时,-f 或 --force 选项会覆盖默认检查,该检查在删除前验证文件是否是最新的。
-n
--dry-run
git rm -n <file>
使用 git rm 时,-n 或 --dry-run 选项会模拟删除过程,而不实际删除任何文件。
因为它会显示哪些文件将从 index 中删除,所以您可以在执行实际删除前检查更改。
-r
--recursive
git rm -r <directory-name>
当指定了前导目录名时,git rm 中的 -r 选项允许我们执行递归删除,从而删除目录及其所有内容。
如果没有此选项,git rm 只会删除文件,而不会进入子目录。
--
git rm -- <file>
在 Git 中,可以使用 -- 选项将命令行参数与文件列表或参数分开。
它在文件名可能被误解为命令行选项的情况下特别有用,因为它确保后续参数被视为文件路径而非选项。
--cached
git rm --cached <file>
使用 git rm 时,--cached 选项可用于取消暂存文件,并仅从 index 中移除它们,而不更改工作树中的文件。
无论文件是否被修改,它们都会从暂存区删除,但会保留在本地目录中。
--ignore-unmatch
git rm --ignore-unmatch <file>
使用带有 --ignore-unmatch 选项的 git rm 命令时,即使没有文件匹配提供的模式,命令也会以零的成功状态码终止。
当找不到匹配要求的文件的时,这有助于防止脚本或任务中的错误。
--sparse
git rm --sparse <file>
对于 sparse-checkout cone 之外的路径,git rm 中的 --sparse 选项允许修改 index 条目。
使用 --sparse,git rm 甚至会更新不在 sparse-checkout 配置中的文件的 index,而通常它只会将更改限制在 sparse-checkout cone 内的文件。
-q
--quiet
git rm -q <file>
使用 git rm 时,-q 或 --quiet 选项会抑制标准输出中列出每个被删除的文件。
选择此选项时,程序会删除文件而不显示每个文件的详细信息。
因此,终端输出会变得不那么杂乱。
使用 git rm 命令后,您必须提交更改,以最终从仓库历史记录中删除文件。
此外,当文件有未提交的更改时,使用 git rm -f 命令需要高度谨慎,因为使用此命令后,这些更改将丢失。