在.gitignore中使用'*.sh',但允许跟踪'A/B/C.sh'
注意:我已从副本中删除此问题,因为在使用时!run.sh对我有效,我希望允许ansible/files中的任何文件(我将来可能添加的任何文件)。我发现的其他解决方案对我无效。 我想从我的存储库中排除所有在.gitignore中使用'*.sh',但允许跟踪'A/B/C.sh',git,gitignore,Git,Gitignore,注意:我已从副本中删除此问题,因为在使用时!run.sh对我有效,我希望允许ansible/files中的任何文件(我将来可能添加的任何文件)。我发现的其他解决方案对我无效。 我想从我的存储库中排除所有.sh文件,为此我使用了*.sh,但我想在ansible/files 当前,我的.gitignore文件如下所示: # Ignore python environment venv/ # Ignore .pyc files *.pyc # Ignore .log Files *.log #
.sh
文件,为此我使用了*.sh
,但我想在ansible/files
当前,我的.gitignore
文件如下所示:
# Ignore python environment
venv/
# Ignore .pyc files
*.pyc
# Ignore .log Files
*.log
# Ignore any __pycache__
__pycache__/
# Ignore .sh files
*.sh
# Allow any `.sh` file(s) in ansible/files folder
!/ansible/files/*.sh
# Allow any file(s) in ansible/files folder
!/ansible/files/*
但这不起作用,ansible/files/run.sh
是一个存在但无法跟踪的文件。
问题:为什么.gitignore
忽略/ansible/files/*.sh
&/ansible/files/*
;如何允许跟踪该文件夹中的任何文件
注意:我已从副本中删除此问题,因为在使用时!run.sh适合我,我希望允许ansible/files
中的任何文件(我将来可能添加的任何文件)
我发现的其他解决方案对我不起作用。路径前面可能缺少一个通配符。这只是一个假设,但我怀疑您是否有能力将目标定为
(root)/ansible
试试这个:
# Allow any `.sh` file(s) in ansible/files folder
!*/ansible/files/*.sh
# Allow any file(s) in ansible/files folder
!*/ansible/files/*
此外,您必须将*.sh
的规则更改为以下内容:
# Ignore .sh files
*/*.sh
如果我执行
*/*.sh
操作,它不会忽略app/scripts/prod/run.sh
中的其他.sh
文件(包括我要包含的文件,但也包括任何文件夹的第二个子目录中的任何文件)。dogit的可能重复项请选中ignore-v ansible/files/run.sh
,查看与该文件匹配的规则。可能在ansible
或ansible/files
中有一个带有覆盖规则的.gitignore
,或者路径上可能有一些尾随空格。它将是沿着这些路线的东西。