小编典典

暂存已删除的文件

all

假设我的 git 存储库中有一个名为foo.

假设它已用rm(not git rm) 删除。然后 git status 将显示:

Changes not staged for commit:

    deleted: foo

如何暂存此单个文件删除?

如果我尝试:

git add foo

它说:

'foo' did not match any files.

更新(9年后,哈哈):

这看起来已经在 git 2.x 中修复了:

$ git --version
git version 2.25.1

$ mkdir repo

$ cd repo

$ git init .
Initialized empty Git repository in repo/.git/

$ touch foo bar baz

$ git add foo bar baz

$ git commit -m "initial commit"
[master (root-commit) 79c736b] initial commit
3 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 bar
create mode 100644 baz
create mode 100644 foo

$ rm foo

$ git status
On branch master
Changes not staged for commit:
    deleted: foo

$ git add foo

$ git status
On branch master
Changes to be committed:
    deleted:    foo

阅读 137

收藏
2022-03-08

共1个答案

小编典典

从 Git 2.0.0 开始,git add也将暂存文件删除。

Git 2.0.0 文档 - git-add

<路径规范>’

要从中添加内容的文件。可以给出 Fileglobs(例如 .c)来添加所有匹配的文件。还可以给出一个前导目录名称(例如,添加 dir/file1 和
dir/file2 的 dir)以更新索引以匹配整个目录的当前状态(例如,指定 dir 将不仅记录文件 dir/file1 已修改在工作树中,文件
dir/file2 添加到工作树中,但也从工作树中删除了文件 dir/file3。
请注意,旧版本的 Git 过去常常忽略已删除的文件;如果您使用
–no-all 选项想要添加修改或新文件,但忽略已删除的文件。
*

2022-03-08