将git .gitignore规则应用于现有的存储库

这个问题在这里已经有了答案:

  • 忽略已经提交给Git仓库的文件[复制] 21个答案

  • 使用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

    上一篇: Apply git .gitignore rules to an existing repository

    下一篇: Make .gitignore ignore everything except a few files