我如何 git 提取忽略的文件?

How can I git pull ignored files?

对于我的 Drupal 8 安装,我想使用以下工作流程:

1) 在本地计算机上安装和更新是使用 Composer 完成的。然后将 Composer 文件推送到 Bitbucket。

2) 在远程服务器上,我有一个暂存文件夹,我在其中提取作曲家文件并进行作曲家安装。

3) 在同一台服务器上,我想为生产站点创建另一个文件夹。我在这里克隆暂存文件夹,然后拉取所有更改。

现在的问题是,Drupal 核心和模块文件夹(由 Composer 安装的文件夹)在 gitignore 中。因此,它们不会从暂存阶段拉到生产阶段。我如何 track/version 控制整个暂存文件夹并将更改拉到生产环境中?如果我删除 gitignore 文件,我想下次它们会再次从 Bitbucket 中提取。

编辑:这篇文章描述了一个解决方案,但我不太明白它是如何与这个 CI 服务器一起工作的:http://nuvole.org/blog/2016/aug/19/optimal-deployment-workflow-composer-based-drupal-8-projects

提交文件并推送到用于生产的不同存储库,或者 branch/tag 远离您的主要开发分支(后一种方法的缺点是您的存储库会很快变大)。您也可以选择在暂存时覆盖 gitignore 配置,例如:

git add -f .

或者,考虑 运行 在生产环境中安装 composer 作为部署过程的一部分,或者构建一个可以推送的容器镜像(例如 docker)和 运行 以提供帮助在开发和生产中尽可能保持相似。

您应该修改 .gitignore 并在您的步骤中再次推拉:

  1. 在本地计算机上,删除 .gitignore 中的 Drupal 核心和模块文件夹,然后再次添加并提交并推送。
  2. 在暂存文件夹的远程服务器上,提取更改。
  3. 在生产站点的远程服务器上,从暂存文件夹中提取更改。

选项2:

  1. 保护暂存文件夹中的 .gitignore 文件,即使从 bitbucket 中提取 .gitignore 也不会被覆盖,如下所示:

    git update-index --skip-worktree .gitignore

  2. 修改 .gitignore 文件并在暂存文件夹中添加一些有用的文件。