如何在 .gcloudignore 中包含在 .gitignore 中被忽略的文件

Joh*_*ews 18 git github gitignore google-cloud-platform gcloud

我在我的某些文件夹中忽略了.gitignore它,因为我不希望它在 Github 上发布。

但是,这些文件在部署到 GCP(本地包)时必不可少。

如果我拿出.gitignore.gcloudignore随后的文件我确实想忽略(如venv, .idea, .pyc上传,这是我不想要的东西)。

我怎么能只包含.gitgnorein的一部分.gcloudignore


.gcloudignore

.gcloudignore
.git
.gitignore

node_modules
#!include:.gitignore
Run Code Online (Sandbox Code Playgroud)

.gitignore

# This I want to ignore in .gcloudignore
.Python
env/
build/

# This I want to keep in .gcloudignore
module_data_import
module_calendar
Run Code Online (Sandbox Code Playgroud)

Chr*_*man 17

如果某个文件已被先前在 .gcloudignore 文件中的模式(例如继承 .gitignore 设置或排除的目录)排除,则您可以明确包含该文件。

要包含名为 的文件foo,请确保在排除它的规则之后出现以下内容:

!foo
Run Code Online (Sandbox Code Playgroud)

要包含名为“bar”的文件夹,请确保在排除它的规则之后出现以下内容:

!bar/
Run Code Online (Sandbox Code Playgroud)

来源:https : //cloud.google.com/sdk/gcloud/reference/topic/gcloudignore

  • 用目录示例更新了我的答案。 (3认同)

Dan*_*scu 10

这两个文件大多是正交的,它们用于不同的目的并被不同的工具使用。

它们之间的唯一关系(除了从语法和行为中.gcloudignore大量继承之外.gitignore)是能够将.gitignore文件包含在.gcloudignore文件中,这就是您所做的:

#!include:.gitignore
Run Code Online (Sandbox Code Playgroud)

那副作用是的,当然,这一切都.gitignore也将在GAE的部署被忽略,因为你观察到。从gcloud 主题 gcloudignore

这将包括.gitignore文件中该路径处的-style 文件的内容。它不会递归(即包含的文件是cannot #!include另一个文件),并且除了要上传的顶级目录外不能在任何地方。

但您不必包含.gitignore. 您需要做的就是删除该包含并准确指定.gitignore您想要在部署中忽略的模式。如果我正确理解您的目标描述,.gcloudignore它将看起来像这样:

.gcloudignore
.git
.gitignore

node_modules
module_data_import
module_calendar
Run Code Online (Sandbox Code Playgroud)

如果在两个文件中复制这些模式让您感到困扰,那么一个潜在的替代方案(恕我直言相当复杂)可能是利用 git 的能力来忽略基于从多个来源收集的模式的文件(尽管范围不同,因此请注意这一点)。请参阅 https://git-scm.com/docs/gitignore我可以在 .gitignore 文件中包含其他 .gitignore 文件吗?(就像 C 类语言中的 #include)

如果您能找到适合您的应用程序的合适拆分,您可以:

  • 只保留.gitignore您在部署时也想忽略的文件模式(当然,保留.gitignore包含在 中.gcloudignore
  • 将其他模式放在 git 用来确定忽略规则的另一个文件中 - 因此它们会被 git 忽略,但由于此文件未包含在其中,.gcloudignore 因此在部署时不会被忽略。

更新以下评论:

在最初的回答中,我没有考虑 gcloud 命令本身执行直接或间接针对源代码存储库操作的操作的情况,如果使用 git 作为版本控制系统,当然会受到影响.gitignore 文件的存在和内容。在这种情况下,可以认为 gcloud 命令本身使用 .gitignore 文件(无论 .gcloudignore 文件如何)。

  • >> 这两个文件大多是正交的,它们服务于不同的目的并由不同的工具使用。错误的。“gcloud builds”命令会忽略 .gitignore 中的内容。 (2认同)