gitignore:忽略子文件夹中除特定文件类型以外的所有内容

时间:2018-11-01 17:46:26

标签: git gitignore

我有一个.gitignore文件,它似乎无法正常工作。它没有按预期上传子目录中的任何文件,但是我添加了除所有.cs文件之外的文件,但子目录仍然为空。这是我的代码:

/*

!.gitignore

!my_repo/build/game/Assets/Scripts/*.cs

除了.cs文件和.gitignore文件外,我什么也不想做。但是.cs文件似乎仍然没有被git接收。谢谢。

PS。

我也尝试过这样做,但是它也不起作用:

!*.cs

2 个答案:

答案 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 *

添加