关于git:将.gitignore应用于已提交的文件


Applying .gitignore to committed files

我已经提交了很多我现在想忽略的文件。我如何才能告诉Git现在忽略将来提交的这些文件?

编辑:我也要从存储库中删除它们。它们是在构建之后创建的文件,或者是为特定于用户的工具支持而创建的文件。


编辑.gitignore以匹配忽略的文件后,可以执行git ls-files -ci --exclude-standard以查看排除列表中包含的文件;然后可以执行git ls-files -ci --exclude-standard -z | xargs -0 git rm --cached以将它们从存储库中删除(而不从磁盘中删除)。

编辑:您也可以将此作为别名添加到.gitconfig文件中,以便您可以随时运行它。只需在[别名]部分下添加以下行:

1
apply-gitignore = !git ls-files -ci --exclude-standard -z | xargs -0 git rm --cached

(xargs中的-r标志防止git rm在空结果上运行并打印出其使用消息,但只能由gnu findutils支持。其他版本的xargs可能有,也可能没有类似的选择。)

现在你只需在回购中键入git apply-gitignore,它就可以为你完成工作了!


  • 编辑.gitignore以匹配要忽略的文件
  • git rm --cached /path/to/file
  • 参见:

    • 如何在不从磁盘删除文件的情况下对其进行Git-rm?
    • 从Git存储库中删除文件,而不从本地文件系统中删除该文件
    • 添加后忽略git repo中的目录


    将文件保留在repo中,但忽略将来对其所做的更改:

    1
    git update-index --assume-unchanged <file>

    要撤消此操作:

    1
    git update-index --no-assume-unchanged <file>

    要找出已按此方式设置的文件:

    1
    git ls-files -v|grep '^h'

    原始答案的学分http://blog.pagebakers.nl/2009/01/29/git-ignoring-changes-in-tracked-files/


    确保您的实际回购是最新版本

  • 根据需要编辑EDOCX1[0]
  • git rm -r --cached .
  • git add .
  • 然后像往常一样承诺


    老问题,但我们中的一些人在EDOCX1(PowerShell)中。这就是解决方案:

    1
    git ls-files -ci --exclude-standard | foreach { git rm --cached $_ }

    遵循以下步骤:

  • 添加到gitignore文件的路径

  • 运行此命令

    1
    git rm -r --cached foldername
  • 像往常一样提交更改。