我有一个名为packages的文件夹在我的git仓库中,我希望忽略该文件夹内的所有内容,但保留扩展名为targets的文件。我已经尝试在我的.gitignore文件中加入以下内容:
packages/
!packages/**/*.targets
但是它不能正常工作。
我该如何忽略该文件夹,但不忽略目标文件?
我有一个名为packages的文件夹在我的git仓库中,我希望忽略该文件夹内的所有内容,但保留扩展名为targets的文件。我已经尝试在我的.gitignore文件中加入以下内容:
packages/
!packages/**/*.targets
但是它不能正常工作。
我该如何忽略该文件夹,但不忽略目标文件?
这对我来说似乎有效(Git 1.8.2.1):
packages/**/*.*
!packages/**/*.targets
我需要*.*
这一部分,否则**
将匹配0个目录,而在末尾孤立的*
将匹配包内任何目录,实际上忽略每个目录和文件。
我希望*.*
对你来说不太糟糕,但没有扩展名的文件非常罕见。
嗯,我认为使用直接的.gitignore规则是不可能的。
然而,这应该会有所帮助:
.gitignore:
packages/
添加模式文件:
git add --force -- $(find packages/ -type f -iname '*.targets')
你甚至可以将此添加成为一个 pre-commit 钩子,以便在新的目标文件出现时自动捕获。
为了正确支持带有特殊字符的文件名:
find packages/ -type f -iname '*.targets' -exec git add --force -- {} +