Git无法推送另一个git项目的文件夹部分

时间:2014-05-27 06:48:33

标签: git composer-php bitbucket

我刚用作曲家在我的项目中更新了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

2 个答案:

答案 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