繁体   English   中英

.gitignore不忽略tfvars和.terraform目录

[英].gitignore not ignore tfvars and .terraform directory

看来我的.gitignore不符合预期。

$ git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

        new file:   .gitignore
        new file:   win_2016_datacentre_vm/.terraform/plugins/linux_amd64/lock.json
        new file:   win_2016_datacentre_vm/.terraform/plugins/linux_amd64/terraform-provider-azurerm_v1.16.0_x4
        new file:   win_2016_datacentre_vm/aos-1.tfvars
        new file:   win_2016_datacentre_vm/aos-1.v1/.terraform/plugins/linux_amd64/lock.json
        new file:   win_2016_datacentre_vm/aos-1.v1/.terraform/plugins/linux_amd64/terraform-provider-azurerm_v1.16.0_x4
        new file:   win_2016_datacentre_vm/aos-1.v1/aos-1.plan
        new file:   win_2016_datacentre_vm/aos-1.v1/aos-1.tf
        new file:   win_2016_datacentre_vm/aos-1.v1/aos-1.tfvars
        new file:   win_2016_datacentre_vm/aos-1.v1/terraform.tfstate
        new file:   win_2016_datacentre_vm/aos-1.v1/terraform.tfstate.backup


Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   .gitignore

$ cat .gitignore
# Local terraform directories
docker/*
terraform-getting-started/*
terraform-getting-started.zip
**/.terraform/**
*/**/.tfvars
*.tfstate

令我感到奇怪的是,即使我添加了.terraform,*。tfvars和* .tfstate,为什么仍以git状态报告它们?

还应该将tfstate提交到存储库吗?

非常感谢您的协助。

谢谢

为了稍微扩展一下zerkms的评论 ,此行:

Changes to be committed:

告诉您(和我们)您已经告诉Git: 请包括以下文件

文件名.gitignore颇具误导性。 现在看来似乎是为文件名的文件,或模式的名单,那混帐不应该包括,但它不是;相反,那就是如果他们不是已经存在的Git应该不会自动添加文件名列表(但他们已经在那里),并且不应该认为你应该添加

更长,但很高兴知道

Git的模型是Git根据Git调用的人/哪个部分,从Git调用的内容( 索引暂存区缓存)构建新的提交。 我所知道的对索引的最佳简短描述是,它是Git构建下一个提交 (或在本例中是第一个提交)的地方。

当你第一次检查出存在的一些承诺,你还不能,因为根本就没有什么,但在当你使用未来一段时间内git checkoutgit clone运行git checkout你,Git会指数填写提交,然后使用从提交中提取的索引内容来填充工作树。 现在,索引副本和工作树副本都匹配,并且它们都匹配从提交中取出的文件。

当您有一个充满文件的工作树并更改了其中一些文件时,可以运行git add将现有的工作树文件重新复制回索引中,以使它们为下一次提交做好准备。 现在,索引副本和工作树副本再次匹配,并且两者都仍在提交中的文件不同 (或者,如果该文件是全新的,则它现在不在索引中了。)

当您进行提交时,Git会冻结索引中的副本,并将其放入提交中。 索引中的所有内容现在都在新提交中,现在是当前提交。 因此,现在索引与提交匹配,就好像您刚刚签出该提交一样。 如果所有索引文件都与所有工作树文件匹配,则每个文件的所有三个副本都将匹配,就像您第一次签出提交时一样。

从索引中删除一个文件,使用git rm :这会从索引工作树将其删除。 要仅将其从索引中删除并保留在工作树中,请改用git rm --cached 请注意:如果文件在某些​​现有提交中,并且从索引中将其删除,则该文件将不在您进行的提交中,但仍将是现有提交。 检出其中之一将(或至少可以)使用git rm --cached覆盖您故意留下的工作树文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM