2009-12-31 60 views
115

首先,我是Git的新手。使用Git/GitHub删除文件

我使用Finder在Mac上本地删除了一堆文件。我希望删除的文件不再显示在当前分支中,但它们确实如此。

任何Git用户都知道更新索引的命令?

+0

另请参阅http://stackoverflow.com/questions/492558/removing-multiple-files-from-a-git-repo-that-have-already-been - 从磁盘删除 – 2012-11-15 10:51:40

回答

224

我认为这将是你想要做什么简单的方法:

git add . -A 

那么你就只是做:

git commit -m "removed some files" 

如上所述。

+0

谢谢。我在'bash'中写了别名来完成上述操作。 令人惊叹。 – Zack 2010-02-20 16:36:30

+0

如果你在同一个“stage”中添加了一个文件,那么git将会进行重命名。任何事情要做或应该分开进行? – Koen 2012-03-01 10:22:58

+12

-A标志是做什么的? – 2012-06-20 08:32:54

17

可以看到被删除的文件,目前仍在 '跟踪' 有:

git ls-files --deleted 

将一个分支的删除文件,你可以这样做:

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

man git-rm

从索引或从工作树和索引中删除文件。 git-rm不会从你的工作目录中删除文件。 (没有选项 13只从工作树,但保持它在索引中删除文件;使用/ bin/RM,如果你想这样做)

最后,提交了“去除“做这样的事情:

git commit -m "removed some files" 
+0

谢谢,接下来是什么? – Zack 2009-12-31 00:43:19

+0

然后你需要提交修改 - 'git commit -m“删除了一些文件”' – 2009-12-31 00:44:32

+0

是的,当然,谢谢 - – miku 2009-12-31 00:46:05

17

我不知道这是否已经添加自上次回答的Git,但我只是用

git add -u 
git commit -m "Removed some files" 

来实现同样的事情。

+0

这适用于列出的用例,但这不仅仅是添加文件的删除。它添加了以任何方式更改过的所有文件,因此这通常不是删除所有已删除文件的好方法,除非这是您所做的唯一更改。 – Alex 2016-08-24 21:23:18

2
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch deletefile.name' --prune-empty --tag-name-filter cat -- --all 
git commit -m "Removed deletefile.name" 
git push origin master --force 

将deletefile.name替换为要删除的文件。有关深入详细的解释,请阅读好文章https://help.github.com/articles/remove-sensitive-data