【发布时间】:2021-11-26 19:01:25
【问题描述】:
这些是我的 .gitignore 中关于 flutter pub run build_runner build --delete-conflicting-outputs 生成的文件的行
*.freezed.dart
*.g.dart
我试过了
git rm -rf --cached .
git add .
仍然会再次添加 *.freezed.dart 和 *.g.dart
【问题讨论】:
这些是我的 .gitignore 中关于 flutter pub run build_runner build --delete-conflicting-outputs 生成的文件的行
*.freezed.dart
*.g.dart
我试过了
git rm -rf --cached .
git add .
仍然会再次添加 *.freezed.dart 和 *.g.dart
【问题讨论】:
我不明白为什么,但我改变了
*.freezed.dart
*.g.dart
为
*.g.dart
*.freezed.dart
它开始工作了
【讨论】:
.gitignore 处理中存在错误,已在 Git 2.34.1 中修复。我不清楚这个错误到底做错了什么,但这是一种可能性。不过,更有可能的是,我怀疑您之前已将 .gitignore 文件保存为 UTF-16,这次保存为 UTF-8。
如果我正确理解了您的问题;如果文件之前已被 git 跟踪,那么您需要删除文件,然后将这些更改提交到存储库以将它们从 git 中删除,但保留本地副本。
git rm -r --cached .
git add .
git commit -m "remove ignored files"
或者,您可以直接删除文件/目录:
git rm -r --cached <file>
下次提交后不应再跟踪文件/目录
【讨论】:
正如评论所言,Git 2.34.1 修复了围绕 .gitignore 的回归问题。
discussion on the Git mailing list 揭示了围绕commit f652672 的问题(“dir:正确选择目录”)
虽然与您的案例没有直接关系(仅忽略文件,而不是文件夹),但请检查升级到 2.34.1 是否有帮助。
【讨论】:
git check-ignore -v -- a/file/which/should/be/ignored 没有忽略那个git check-ignore 命令工具吗?