例如,我们有包含.gitignore
内容的本地存储库:
/.env.*.local
/public/bundles/
/var/
/vendor/
和来自git config
的全球.gitignore
:
.idea/
setup_done.lock
正如我们在我的全局.gitignore
中看到的那样,我们忽略了目录.idea/
,但 repo 附带了这个目录,当我在 IDE 中工作时,它会对这些文件进行更改并希望提交它们。
是否可以"硬覆盖"存储库的.gitignore
而不跟踪目录中.idea/
更改?
您可以这样做,假设没有添加/删除任何文件并且不存在子目录(来源(:
git update-index --assume-unchanged .idea/*
但是,请务必阅读并理解 IDEA 的文档,了解从.idea
提交的内容。
无法使 Git 忽略对跟踪文件的更改。 有些人会告诉你使用--assume-unchanged
或--skip-worktree
标志来git update-index
,但这些标志并非在所有情况下都有效,不是为此目的而设计的,并且上游不支持这样做。
通常,特定编辑器的配置文件不属于版本控制,因为用户将使用不同的配置。 处理此问题的最佳方法是从版本控制中删除.idea
目录,并使用静态的、与编辑器无关的配置,例如.editorconfig
文件。 一旦你这样做了(例如,使用git rm --cached .idea
(,你的 gitignore 将被尊重,因为 Git 将不再跟踪配置。