将git .gitignore规则应用于现有的存储库
这个问题在这里已经有了答案:
使用git rm --cached
获取文件,使用git rm -r --cached
获取build/
目录
这里有一种方法可以“解开”任何在当前一组排除模式下会被忽略的文件:
(GIT_INDEX_FILE=some-non-existent-file
git ls-files --exclude-standard --others --directory --ignored -z) |
xargs -0 git rm --cached -r --ignore-unmatch --
这将文件保留在工作目录中,但将其从索引中删除。
这里使用的技巧是为git ls-files提供一个不存在的索引文件,以便它认为没有跟踪的文件。 上面的shell代码要求所有的文件,如果索引是空的,将被忽略,然后用git rm从实际索引中删除它们。
在文件“未被跟踪”之后,使用git status来验证没有什么重要的被删除(如果是的话调整你的排除模式并使用git reset -- path
来恢复被删除的索引条目)。 然后做出一个新的承诺,抛弃“糟糕”。
“crud”仍然会在任何旧的犯下。 如果你真的需要一个干净的历史记录,你可以使用git filter-branch生成旧提交的干净版本(使用git filter-branch将“重写历史记录”,所以如果你有任何合作者已经拉首次推出“crud”之后的任何历史承诺)。
如果您已经在跟踪要忽略的文件,则必须将其删除
git rm --cached <file>
Git不会忽略已经被跟踪的文件(即你用git add添加它们)。
链接地址: http://www.djcxy.com/p/23391.html