暂存已删除的文件
假设我在git仓库中有一个名为foo
的文件。
假设它已经被rm
(不是git rm
)删除了。 然后git状态将显示:
Changes not staged for commit: deleted: foo
我该如何处理这个单独的文件删除?
如果我尝试:
git add foo
它说:
'foo' did not match any files.
使用git rm foo
来git 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选项想要添加修改或新的文件,但忽略删除的。