将.gitignore应用于提交的文件

我已经承诺我现在要忽略的大量文件。 我怎么能告诉git现在忽略未来提交这些文件?

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

  1. 编辑.gitignore以匹配您要忽略的文件
  2. git rm --cached /path/to/file

也可以看看:

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

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

编辑 :你也可以在.gitconfig文件中添加这个别名,以便随时随地运行它。 只需在[别名]部分下添加以下行:

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

xargs-r标志防止git rm运行在一个空的结果上并打印出它的使用信息,但是只能由GNU findutils支持,其他版本的xargs可能有也可能没有类似的选项。

现在你可以在你的repo中inputgit apply-gitignore ,它会为你做的工作!

将文件保留在回购站中,但忽略对其的更改:

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

并取消这个:

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

找出哪些文件已经被这样设置:

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

信用为原始答案http://blog.pagebakers.nl/2009/01/29/git-ignoring-changes-in-tracked-files/

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

  1. 编辑.gitignore如你所愿
  2. git rm -r --cached .
  3. git add .

然后照常进行

老问题,但我们中的一些人在git-posh (powershell)。 这是解决scheme:

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

按着这些次序:

  1. 添加path到gitignore文件

  2. 运行这个命令

     git rm -r --cached foldername 
  3. 通常会进行更改。

恐怕你必须从你的仓库中删除他们与git rm ignoredfile1 ignoredfile2等一些bash大师可以肯定地帮助你一些神奇的.gitignore – 使用find等模式。