所以我有一个项目,一开始我做了一个
git add .因此,我可以开始工作,而不会为哪些文件将是版本控制或其他什么而烦恼。
当然,这很痛苦,因为在每次提交之间,我通常只更改3-5个文件,所有的构建文件(.class、.html、.xml等)都会完全重新生成,这意味着
git add .我将添加数百个文件,而不是我真正更改的3-5个文件。
我知道我可以将所有不需要的文件添加到一个.gitignore文件中。我想做的是,如果有一种方法可以追溯这一点。我想首先删除所有不应该在提交中的文件。
有没有可能在git中做到这一点?如果是,是如何实现的?
发布于 2011-04-19 22:35:47
可以,您可以使用git filter-branch。
The Pro Git Book has a nice section on removing objects from history
--index-filter <command> 这是用于重写索引的过滤器。它类似于树筛选器,但不检出树,这使得它更快。经常与
git rm --cached --ignore-unmatch …一起使用,请参见下面的示例。对于复杂的情况,请参见git-update-index(1)。
举个例子:
git filter-branch \
--index-filter 'git rm --cached --ignore-unmatch filename' \
--tag-name-filter cat \
-- --alltag-name-filter也会重写你的标签,所以你不会丢失它们。
免责声明
要小心重写公共历史。你可能会让其他人不可能/很难跟上最新的信息或做出贡献。
发布于 2011-04-19 22:37:27
http://help.github.com/removing-sensitive-data/
不会删除敏感数据,但这似乎就是您要找的。
git filter-branch --index-filter 'git rm --cached --ignore-unmatch *.<filetype>' HEAD
发布于 2011-04-19 22:31:33
据我所知,git不会追溯性地这么做。您需要对它们进行git rm或git rm --cached。
https://stackoverflow.com/questions/5717976
复制相似问题