git - 当我用分支推送时,.gitignore 不会忽略文件

我的项目有两个分支,主分支和测试分支。当我在分支测试时,我编辑了文件 .gitignore 我添加了 vendor/* 。但出于某种原因,当我执行 git push origin test:master 时,它仍然在供应商中推送文件。有没有办法刷新缓存或类似的东西以确保它正常工作?

提前致谢

最佳答案

我的猜测是,在填充 .gitignore 之前,您的 vendor 目录中的文件已被 git 跟踪。

在这种情况下,您看到的行为是正常的:git 索引知道这些文件并跟踪它们的内容。如果你在 git 跟踪文件后填充你的 .gitignore,那就太晚了,它只会忽略你从此时开始添加的文件。

您需要做的是取消引用这些文件(或“取消跟踪”),以便索引不再知道它们——但不会删除它们。为此,使用 git rm--cached 选项:

git rm -r --cached vendor

然后提交结果。从现在开始,当您填写 .gitignore 时,vendor 目录将被忽略。

请注意,对于在此目录中跟踪文件的每个分支,您都必须重复此操作。

最后,还有一种更具破坏性的方法,因此非常危险:git filter-branch。但是你想把它作为最后的手段,并且只有在你真的需要它的时候才这样做。

https://stackoverflow.com/questions/8858852/

相关文章:

vb.net - 从 ListView 中删除项目

assembly - 将二进制转换为十进制并在汇编中显示

visual-studio - VS2010 中缺少“属性页”选项卡

css - 我怎样才能将CSS选择器组合在一起

c# - 如何从后面的 C# 代码更新 WPF 绑定(bind)的值?

php - 我可以将匿名函数放在 PHP 的数组中吗?

sql-server - SQL Server 2008,我可以在 udf 中的 select 语句

f# - 错误 FS1133 : No constructors are available for

sql - 使用 SQL 脚本创建 SQL Server 数据库

php - 在表单中发布非输入字段?