我的项目有两个分支,主分支和测试分支。当我在分支测试时,我编辑了文件 .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/