为何需在.gcloudignore中手动添加!package.json?Git与Gcloud规则疑问
解决Git与Gcloud一致忽略子目录package.json但保留根目录的问题
你的操作本身没有错误,问题出在Git和Gcloud对.gitignore中**/匹配规则的解析差异上:
- 在Git中,
**/package.json仅匹配任意深度子目录下的package.json,根目录的文件不在匹配范围内,所以能正常保留。 - 但Gcloud对
.gitignore的规则处理逻辑略有不同,它可能将**/package.json误判为包含根目录的文件,导致根目录的package.json也被忽略。
要通过单一.gitignore实现两者一致的规则,只需调整规则,明确排除根目录的文件:
# 忽略所有子目录下的package.json **/package.json # 强制保留根目录的package.json !package.json
这个写法的逻辑是:先通过**/package.json忽略所有层级子目录的目标文件,再用!package.json明确取消对根目录文件的忽略。Git会因为原本就不匹配根目录而不受影响,Gcloud则会通过这条反向规则覆盖之前的误判,最终两者行为完全一致。
内容的提问来源于stack exchange,提问作者sev
相关产品推荐
相关产品推荐

