我刚用作曲家在我的项目中更新了elephant.io,我正在尝试将其推送到远程,但是当我这样做时,git似乎将elephant.io目录视为文件并且它不会推送它? 这是一个错误吗?我在bitbucket上使用git 1.7.11。
修改
可能不是问题,而是其他问题。做:
git ls-files --stage | grep 160000
我得到了
160000 8e151a58e931c87ef1b7d2d2124f5b8d79637d1e 0 vendor/wisembly/elephant.io
**编辑2:解决方案** 最后一个问题是我在git中包含了vendor文件夹,而错误来自于.git配置附带的packagest。忽略供应商文件夹可以解决问题。 谢谢Sven和Vonc
答案 0 :(得分:3)
由于elephant.io是带有submodule 160000 8e151a58e931c87ef1b7d2d2124f5b8d79637d1e
的 special entry ,因此您需要确保:
您已添加,提交并推送在elephant.io中完成的任何修改
cd vendor/wisembly/elephant.io
git add .
git commit -m "my modifs to elephant.io"
git push
然后你会回到父仓库,添加并提交新的特殊条目SHA1:
cd ..
git add .
git commit -m "new revision of elephant.io"
git push
但只有在你有权回到elephant.io
时才有效(或者你不应该对其进行任何修改,或者至少你的子模块应该引用elephant.io
的分支你拥有的。)
无论如何,要明确,elephant.io
是"不是"推动与其名称中有一个点的事实无关。
由suggested作为Sven,因为作曲家会处理依赖关系,所以您可以忽略vendor
文件夹。这将使这些子模块不能从父仓库中看到。
答案 1 :(得分:2)
如果您正在使用Composer,并且没有特殊要求将依赖项包含在您自己的存储库中,我认为遵循Composer开发人员的建议不要包含{您自己的存储库中的{1}}文件夹,但只添加并提交vendor
文件。
将行composer.lock
添加到最顶层目录中的vendor/
文件中,基本完成。
更多信息:https://getcomposer.org/doc/faqs/should-i-commit-the-dependencies-in-my-vendor-directory.md