我在
.gitignore
中忽略了某些文件夹,因为我不希望将其发布在 Github 上。
但是,这些文件对于部署到 Google Cloud(本地包)来说是必不可少的。
如果我从
.gitignore
中取出.gcloudignore
,那么我确实想忽略的文件(如venv, .idea, .pyc
)就会被上传,这是我不想要的。
如何才能在
.gitgnore
中只包含 .gcloudignore
的一部分?
.gcloudignore
.gcloudignore
.git
.gitignore
node_modules
#!include:.gitignore
.gitignore
# This I want to ignore in .gcloudignore
.Python
env/
build/
# This I want to keep in .gcloudignore
module_data_import
module_calendar
如果文件已被 .gcloudignore 文件中先前的模式(例如继承 .gitignore 设置或排除的目录)排除,则可以显式包含该文件。
要包含名为
foo
的文件,请确保以下内容位于排除该文件的规则之后:
!foo
要包含名为“bar”的文件夹,请确保以下内容位于排除它的规则之后:
!bar/
来源:https://cloud.google.com/sdk/gcloud/reference/topic/gcloudignore
这两个文件大多是正交的,它们有不同的目的并由不同的工具使用。
它们之间的唯一关系(除了
.gcloudignore
大量继承于 .gitignore
语法和行为)是能够将 .gitignore
文件包含在 .gcloudignore
文件中,这就是您所做的:
#!include:.gitignore
当然,这样做的副作用是,正如您所观察到的,在 GAE 部署期间,.gitignore
中的
所有内容也将被忽略。来自gcloud 主题 gcloudignore:
这将包括但是您
.gitignore
样式文件的内容 文件中该点的路径。它不会递归(即 包含文件cannot
#!include
另一个文件)并且不能 除了要上传的顶级目录之外的任何地方。
不必包括.gitignore
。您需要做的就是删除该包含并仅指定您想要在部署中忽略的
.gitignore
模式。如果我正确理解你的目标描述,
.gcloudignore
看起来像这样:
.gcloudignore
.git
.gitignore
node_modules
module_data_import
module_calendar
如果在两个文件中复制这些模式让您烦恼,可能有一个替代方案(恕我直言,相当复杂)
可能是利用 git 的能力来忽略基于从多个源收集的模式的文件(尽管具有不同的范围,所以要注意这一点) )。请参阅 https://git-scm.com/docs/gitignore 和 我可以在 .gitignore 文件中包含其他 .gitignore 文件吗? (就像类 C 语言中的#include).
如果您能找到适合您的应用的分体式接头,您可以:
.gitignore
中您还想在部署时忽略的文件模式(当然,保留
.gitignore
包含在
.gcloudignore
中)
.gcloudignore
中,因此它们在部署时不会被忽略。
在最初的答案中,我没有考虑 gcloud 命令本身执行直接或间接针对源代码存储库操作的情况,如果使用 git 作为版本控制系统,当然会受到影响通过 .gitignore 文件的存在和内容。在这种情况下,人们可以认为 gcloud 命令本身使用 .gitignore 文件(无论 .gcloudignore 文件如何)。
.gitignore
中忽略的文件夹,我必须使用以下语法:
!bar/**
没有 **
就无法工作。
.gitignore
中的内容,但有一个例外。这对我有用:
#!include:.gitignore
!foo