我已经提交了一些我现在想要忽略的文件。我如何告诉git现在忽略未来提交的这些文件?
编辑:我也想将它们从存储库中删除。它们是在构建之后创建的文件或用于特定于用户的工具支持。
答案 0 :(得分:570)
在编辑.gitignore
以匹配被忽略的文件后,您可以git ls-files -ci --exclude-standard
查看排除列表中包含的文件;然后,您可以执行git ls-files -ci --exclude-standard -z | xargs -0 git rm --cached
将其从存储库中删除(不将其从磁盘中删除)。
编辑:您也可以在.gitconfig文件中将其添加为别名,以便随时随地运行。只需在[alias]部分下添加以下行:
apply-gitignore = !git ls-files -ci --exclude-standard -z | xargs -0 git rm --cached
(-r
中的xargs
标志阻止git rm
在空结果上运行并打印出其使用消息,但只能由GNU findutils支持。其他版本的{{ 1}}可能有也可能没有类似选项。)
现在您只需在回购邮件中输入xargs
即可,它将为您完成工作!
答案 1 :(得分:401)
.gitignore
以匹配您要忽略的文件git rm --cached /path/to/file
另见:
答案 2 :(得分:117)
将文件保留在repo中但忽略对它的未来更改:
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/
答案 3 :(得分:67)
确保您的实际回购是最新版本
.gitignore
git rm -r --cached .
git add .
然后像往常一样提交
答案 4 :(得分:10)
老问题,但是我们中的一些人在git-posh
(powershell)。这是解决方案:
git ls-files -ci --exclude-standard | foreach { git rm --cached $_ }
答案 5 :(得分:0)
请按照以下步骤操作:
添加gitignore
文件
运行此命令
git rm -r --cached foldername
通常提交更改。