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

问题描述 投票:0回答:4

我在

.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
git github google-cloud-platform gitignore gcloud
4个回答
26
投票

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

要包含名为

foo
的文件,请确保以下内容位于排除该文件的规则之后:

!foo

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

!bar/

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


18
投票

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

它们之间的唯一关系(除了

.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
     中)
  • 将其他模式放在 git 用于确定忽略规则的另一个文件中 - 因此它们会被 git 忽略,但由于该文件不包含在
  • .gcloudignore
     中,因此它们在部署时不会被忽略。
更新以下评论:

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


1
投票
要包含在

.gitignore

 中忽略的文件夹,我必须使用以下语法:

!bar/**
没有 

**

 就无法工作。


0
投票
我想拥有

.gitignore

中的内容,但有一个例外。这对我有用:

#!include:.gitignore !foo
    
© www.soinside.com 2019 - 2024. All rights reserved.