我有一个存储库,其中包含一个名为 mod/的子目录。我希望这个子目录连同其中的 README 文件一起包含在存储库中,但我不希望包含 mod/中的其他子目录。我已经尝试了几个建议的修复 here使用 .gitignore 并提交更改,但 git status
仍然显示正在跟踪 mod/中的所有内容。目前,我的 .gitignore 包含:
mod/* # Ignore everything in 'mod'...
!mod/README.md # ... except this.
但我也试过将第一行设置为:
/mod
mod/
./mod
./mod/*
和一些其他变体...
要在每次编辑 .gitignore 时“应用”这些设置,我运行:
git rm -r --cached .
git add .gitignore
git add mod/README.md
git commit -m "banging my head on the wall"
git status
并且状态继续显示 mod/中未跟踪的文件。
最佳答案
我可以想到三个直观的选项:
添加一个单独的
.gitignore
到mod
:* !README.md
使用你的根级别
.gitignore
,每行只有一个规则或注释,但不能同时有:./mod/* !./mod/README.md
我在这里使用
./
前缀来强调,但这并不是绝对必要的。由于所有路径都包含一个非尾部斜杠,因此它们将被解释为相对于.gitignore
的目录而不管。不要将
.gitignore
用于肯定规则:忽略mod
,然后执行git add -f mod/README.md
Git 持续跟踪使用
-f/--force
标志添加的任何文件。
关于git - 如何忽略 git 存储库子目录中除单个文件外的所有内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51410403/