我有一个.gitignore文件,它似乎无法正常工作。它没有按预期上传子目录中的任何文件,但是我添加了除所有.cs文件之外的文件,但子目录仍然为空。这是我的代码:
/*
!.gitignore
!my_repo/build/game/Assets/Scripts/*.cs
除了.cs文件和.gitignore文件外,我什么也不想做。但是.cs文件似乎仍然没有被git接收。谢谢。
PS。
我也尝试过这样做,但是它也不起作用:
!*.cs
答案 0 :(得分:1)
您还需要包括目录。参见https://git-scm.com/docs/gitignore#_examples
# Ignore all (assumes ignore is in my_repo/build/.gitignore)
/*
!.gitignore
# Exempt directories
# Also ignore all files except the sub directories in the path
!game/
game/*
!game/Assets
game/Assets/*
!game/Assets/Scripts
game/Assets/Scripts/*
# Except your CS files
!game/Assets/Scripts/*.cs
-更新以增加清晰度-
这似乎是违反直觉的,但是您必须首先明确地 include 目录,因为:
如果排除了文件的父目录,则无法重新包含该文件。由于性能原因,Git不会列出被排除的目录,因此所包含文件上的任何模式(无论它们在何处定义)都无效。
因此,您必须包括目录,然后通过反默认忽略目录中的所有内容,然后创建豁免。
答案 1 :(得分:-2)
线
!my_repo/build/game/Assets/Scripts/*.cs
包含根文件夹(不应该),并且
!*.cs
仅在根文件夹中显示。
应该像
/*
!.gitignore
!**/*.cs
然后使用git add -f *
添加