【问题标题】:How to commit Composer vendor folder into Git repository?如何将 Composer 供应商文件夹提交到 Git 存储库?
【发布时间】:2017-04-20 11:30:01
【问题描述】:

我能否设置 .gitignore 以允许 Composer 依赖项(供应商目录)存在于我的存储库中?

Composers 官方建议您“不应该”这样做。它提供了三个原因(https://getcomposer.org/doc/faqs/should-i-commit-the-dependencies-in-my-vendor-directory.md):

  1. 更新代码时 VCS 存储库大小和差异。
  2. 在您自己的 VCS 中复制所有依赖项的历史记录。
  3. 将通过 git 安装的依赖项添加到 git repo 会将它们显示为子模块。这是有问题的,因为它们不是真正的子模块,您会遇到问题。

这三个原因对我来说都不重要。此外,聪明的.gitignore 可能会消除原因三。

如果我有必要说明这个问题的动机,那么我的动机是:CocoaPods 就是这样做的,我喜欢 CocoaPods 的工作方式。

我究竟应该在.gitignore 中做什么来实现这一目标?

【问题讨论】:

  • 删除供应商文件夹。并为受伤的世界做好准备。
  • 只是版本锁定文件。在其上安装将提供 100% 理智的结果
  • rm .gitignore。我错过了什么?
  • @exussum 是对的。
  • @exussum, composer install 带有版本化的composer.lock“将提供 100% 合理的结果”……前提是其中定义的所有依赖项仍然可用并且可以检索。在某些情况下它仍然会失败,并且在某些情况下,人们可能实际上希望在其存储库中包含 vendor/

标签: php git composer-php gitignore


【解决方案1】:

在我的情况下,以下工作:

  1. 从 .gitignore 中删除供应商
  2. 清除 git 的缓存:git rm -r --cached .
  3. 添加文件:git add .
  4. 提交文件:git commit
  5. 将文件推送到主仓库。

【讨论】:

    【解决方案2】:

    执行以下操作以提交供应商目录:

    git add vendor 
    git commit -m "Added vendor directory to source control"
    

    【讨论】:

      【解决方案3】:

      只需从 .gitignore 文件中删除对 /vendor 的任何引用。然后添加并提交供应商文件。

      只需准备好将 100 多兆的供应商库文件添加到您的存储库。

      【讨论】:

      • 磁盘空间便宜。修复损坏的依赖关系不那么便宜。
      猜你喜欢
      • 2011-06-15
      • 1970-01-01
      • 1970-01-01
      • 2014-10-20
      • 2017-04-10
      • 2021-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多