如何用.gitignore忽略指定子文件夹且避免父文件夹被GitHub移除?
解决Git忽略子文件夹但保留父文件夹的问题
问题核心原因
Git不追踪空文件夹。你的unit_testing文件夹下只有被忽略的test_cache子文件夹,没有任何Git可追踪的文件,所以推送时远程仓库不会保留这个空文件夹。添加!/unit_testing规则无效,因为Git只追踪文件,不直接追踪文件夹本身。
正确解决方案
方案一:添加占位文件(推荐)
在unit_testing文件夹下创建一个约定俗成的占位文件.gitkeep,用来告诉Git需要保留这个文件夹:
- 本地创建文件:
touch ./unit_testing/.gitkeep - 提交并推送这个文件:
git add ./unit_testing/.gitkeep git commit -m "添加.gitkeep以保留unit_testing文件夹" git push
方案二:确保父文件夹有可追踪的文件
如果unit_testing原本应该包含测试代码等需要追踪的文件,确保这些文件没有被.gitignore忽略,并且已经添加到Git追踪:
git add ./unit_testing/你的测试文件.py git commit -m "提交unit_testing下的测试文件" git push
修正后的.gitignore内容
不需要保留!/unit_testing规则,直接忽略子文件夹即可(末尾加/明确指定是文件夹):
/unit_testing/test_cache/
内容的提问来源于stack exchange,提问作者codebysumit
相关产品推荐
相关产品推荐

