git - 从一个Git repo已从磁盘中删除多个文件

  显示原文与译文双语对照的内容

我已经从使用 rm ( 不是git rm ) 删除了四个文件,我的Git状态如下所示:


# deleted: file1.txt
# deleted: file2.txt
# deleted: file3.txt
# deleted: file4.txt

如何从Git中删除这些文件,而不必手动遍历并添加每个文件:


git rm file1 file2 file3 file4

理想情况下,我正在寻找与 git add. 一样的工作方式,如果可能的话。

时间:

对于 Git 1.x


$ git add -u

这将告诉git自动回写跟踪的文件 --,包括删除以前跟踪的文件。

对于 Git 2.0

要执行整个工作树:


$ git add -u :/

只需执行当前路径:


$ git add -u. 

如果你只运行:

 
git add -u

 

git将更新它的索引,以知道你已经删除的文件实际上是下次提交的一部分。 然后你可以运行"git提交"来签入更改。

或者,如果你运行:

 
git commit -a

 

它将自动执行这些更改( 还有其他的) 并提交它们。

更新:如果你只想添加删除文件,试一试:


git ls-files --deleted -z | xargs -0 git rm
git commit

你可能正在寻找 -A:

 
git add -A

 

这类似于git添加 -u,但也添加了新文件。 这大致相当于 addremove 命令( 尽管移动检测是自动的)的。

要只暂存删除的位图文件:


for x in `git status | grep deleted | awk '{print $3}'`; do git rm $x; done

或者( xargs方式):


git status | awk '/deleted/{print $3}' | xargs git rm

你可以别名首选命令集方便以后使用。

通过使用git-add和'--all'或者'--update'选项,你可能会得到比你想要的更多的。 新的和/或者修改过的文件也将被添加到索引中。 我有一个bash别名设置,当我想从git删除删除的文件而不触动其他文件时:


alias grma='git ls-files --deleted -z | xargs -0 git rm'

已经从文件系统删除的所有文件都被添加到索引中作为已经删除的文件。

这并不重要,但我不同意选择的答案:


git add -u 

如果工作树中的相应文件已经被删除,则将从索引中删除文件,但它也将转储已经修改的文件的新内容。


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

。而另一方面将只删除已经删除的文件。

所以在我看来,后者是更好的选择。

...