暂存已删除的文件

假设我在git仓库中有一个名为foo的文件。

假设它已经被rm (不是git rm )删除了。 然后git状态将显示:

 Changes not staged for commit: deleted: foo 

我该如何处理这个单独的文件删除?

如果我尝试:

 git add foo 

它说:

 'foo' did not match any files. 

使用git rm foogit rm foo要删除的文件。 (这也会将文件从文件系统中删除,如果以前没有删除的话,当然也可以从git中恢复,因为之前已经login了。)

要将文件git rm --cached foo ,而不从文件系统中删除,请使用git rm --cached foo

你可以做git add -u

这将有助于如果你想删除多个文件,而不是做每个人的git rm

要将所有手动删除的文件分级,您可以使用:

 git rm $(git ls-files --deleted) 

要像git rm-deleted一样添加一个别名到这个命令,运行:

 git config --global alias.rm-deleted '!git rm $(git ls-files --deleted)' 

添加所有已准备删除的文件

 git status -s | grep -E '^ D' | cut -d ' ' -f3 | xargs git add --all 

感谢检查确认

 git status 

你应该很好去

您可以使用

git rm -r --cached -- "path/to/directory"

登台被删除的目录。

从Git 2.0.0开始, git add也会暂时删除文件。

Git 2.0.0 Docs – git-add

<pathspec> …

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