如何将Composer的vendor文件夹提交到Git仓库?

5
我能否设置 .gitignore 以使Composer依赖(vendor目录)存放在我的代码库中?
Composers 官方建议您“不应该”这样做,并提供了三个原因:(https://getcomposer.org/doc/faqs/should-i-commit-the-dependencies-in-my-vendor-directory.md)
1.当您更新代码时,VCS 存储库大小和差异较大。
2.在您自己的 VCS 中复制所有依赖项的历史记录。
3.将通过 git 安装的依赖项添加到 git 存储库中将显示它们作为子模块。这是有问题的,因为它们不是真正的子模块,你将遇到问题。
这三个原因对我来说都不重要。也可能需要通过聪明的 .gitignore 方法解决第三个原因。
如果需要说明我为此提出问题的动机,那么我的动机是:CocoaPods 就是这样做的,我喜欢 CocoaPods 的工作方式。
要实现这一点,应在 .gitignore 文件中执行如下操作:

1
删除供应商文件夹。准备迎接痛苦的世界。 - Jordan Soltman
1
只需对锁定文件进行版本控制。在此基础上安装将会得到100%正常的结果。 - exussum
嗯,rm .gitignore。我错过了什么? - spinkus
@exussum 是正确的。 - Jordan Soltman
4
@exussum说,使用带版本的 composer.lock 进行 composer install 将提供“100%合理的结果”...前提是其中定义的所有依赖项仍然可用且可以检索。尽管如此,仍有可能失败,并且在某些情况下,实际上可能需要将 vendor/ 目录包含在其存储库中。 - Chris
显示剩余2条评论
3个回答

7

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

但准备好向您的存储库添加100多兆字节的供应商库文件。


4
磁盘空间很便宜,而修复损坏的依赖关系则更不便宜。 - user1247989

2
在我的情况下,以下操作有效:
  1. 从.gitignore中移除vendor。
  2. 清除git的缓存:git rm -r --cached .
  3. 添加文件:git add .
  4. 提交文件:git commit
  5. 将文件推送到主仓库。

1

执行以下操作以提交Vendor目录:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接