-->

舞台被删除的文件(Staging Deleted files)

2019-06-28 05:26发布

说我有我叫混帐repostiory文件foo

假设它已经与被删除rm (没有git rm )。 然后git的状态会显示:

Changes not staged for commit:

    deleted: foo

如何策划这出单个文件删除?

如果我尝试:

git add foo

它说:

'foo' did not match any files.

Answer 1:

使用git rm foo上演删除该文件。 (这也将删除该文件系统中的文件,如果它以前没有被删除。它可以,当然,从git的恢复,因为它是在先前检查。)

对阶段为删除该文件,而不从文件系统删除,使用git rm --cached foo



Answer 2:

你可以做git add -u

这将有助于如果你想删除多个文件,而不做git rm为他们每个人。



Answer 3:

要阶段,你可以使用所有手动删除的文件:

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

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

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


Answer 4:

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

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

谢谢检查,以确保

git status

你应该是好去



Answer 5:

由于Git的2.0.0, git add也将上演文件删除。

Git的2.0.0文档-蹦加

<pathspec> ...

要添加的文件与内容。 Fileglobs(如* .c)中可以提供给所有添加>匹配的文件。 另外一家领先的目录名称(例如目录添加目录/文件1和dir /文件2)可以提供给更新索引的目录的当前状态匹配作为一个整体(例如指定目录会记录不只是一个文件目录/文件1修改在工作树,文件目录/文件2添加到工作树,但也是一个文件目录/文件3从工作树中删除需要注意的是旧版本的Git用于忽略删除的文件;使用,如果你--no-all选项要添加或修改的新文件,但忽略删除的。



Answer 6:

您可以使用

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

上演了一出删除的目录。



文章来源: Staging Deleted files