【问题标题】:Git can't see files installed by composerGit 看不到 composer 安装的文件
【发布时间】:2014-09-08 02:32:36
【问题描述】:

我遇到了以下问题:

我使用composer install 在我的项目中安装了一些依赖项(symfony)。

但是当我尝试提交时,它看不到任何文件。

我已经搜索了每个 .gitignore 文件,但我认为这不是由忽略这些文件引起的 - 我已经用 SourceTree 进行了检查,这些文件甚至没有“忽略”或“全部”,它们根本没有根本不存在于 git 中。

所以,我尝试了git add vendor/symfony/*git add vendor/symfony/*/* 等,但它只是在提交中添加了一些文件夹,而不是文件。

当我移动整个 symfony 文件夹时,没有任何变化。如果我重命名某些东西也是一样。 但是,如果我在 symfony 文件夹中创建一些文件,该文件夹只包含其他文件夹(没有文件),它就会出现。但是 - 如果我在 symfony 中将文件放在另一个文件旁边,它就不会出现。

我已经查看了 /.git/info/exclude,但也没有任何可疑之处。

平台: 视窗 7 x64 混帐 1.8.4

作曲家有什么我不知道的吗?还是我错过了什么?

感谢您的回答。

编辑:

嗯, 这有点奇怪,但我成功了。

首先我尝试添加具有完整路径的单个文件(使用git add)。 CMD报错,无法添加,因为该文件在子模块中。

根据this advice,我试过git rm --cached -r vendor/symfony,它可能清除了一些引用。

然后我可以再次调用git add,但我必须使用文件路径(有很多嵌入文件夹),例如git add vendor\symfony\browser-kit\Symfony\Component\BrowserKit\*

我实际上不知道发生了什么,但是在我制作了 .bat 文件并在那里的所有文件上调用它之后,我可以提交它。

感谢您的时间、帮助和建议。 :)

【问题讨论】:

标签: git github composer-php


【解决方案1】:

我还是 git 新手,但我可以分享我自己添加文件的个人经验。在找到最适合我的方法之前,我仍在使用各种程序。我已经安装了 MySysGit、TortoiseGit,因为我使用 GitHub,所以我有一个 GFW 程序,它安装了 PowerShell。

电源外壳

我要输入的第一件事是git status。如果您有未跟踪的文件,请尝试添加没有* 的文件夹。我已经看到它递归地在我指定的文件夹及其子目录中添加文件。如果这不起作用,请使用 TortoiseGIt。

git add vendor/symfony

只要您在 shell 中存在供应商/symfony,它就应该添加文件及其子目录。

龟甲

右键单击该文件夹并查找显示add 的蓝色十字。一旦发现所有文件,选择所有文件并让它处理它们。然后再次使用 git status 查看发生了什么变化以及您可能还需要做什么。

只要有未跟踪的文件,TortoiseGit 就应该添加它们和任何子目录。

Git 状态

如果git status 没有显示任何未跟踪的文件,并且您的硬盘驱动器上的 git 存储库中没有供应商/symfony,那么我会检查composer install 是否需要其他参数来将文件放置在您的位置期待他们去。

【讨论】:

  • 谢谢,但没有帮助。 Power Shell 没有效果,Git Status 说没有未跟踪的文件。问题是,文件确实在那里,我可以通过资源管理器看到它们。他们在正确的地方:(
  • 希望我的建议对您有所帮助。我并没有试图无缘无故地回应。我确实首先查看了this link。这也是我建议安装 TortoiseGIt 的原因。如果git statusTortoiseGit 都没有看到文件,但您可以手动复制 Git 将看到的文件,那么运行 composer install 可能还有更多。我觉得使用作曲家的其他论点或步骤被忽略了。因此,它与作曲家有关,与 Git 无关。无论如何都要消除一件事。
  • 是的,我想你是对的。同时我用 Shell 解决了它(见问题的编辑),但你的解决方案更有用。感谢您提供有关 TortoiseGit 的提示和建议,它为我带来了解决方案:)非常感谢!
  • 由于您能够添加文件,但对添加文件的方法有疑问,您是否完成了该帖子的最后一步? $ find . -name .git 因为拥有多个 .git 文件夹,除非它是有意的,否则不是一个好主意。我会删除任何不需要的 .git 文件夹,除非您需要 composer 来安装和更新其他 PHP 包。检查他们的文档以确定。
  • 好点。检查过了,没问题。只有一个.git。谢谢:)
【解决方案2】:

您应该将整个 vendor 文件夹添加到 .gitignore 中,而不是将这些依赖项提交到您自己的存储库中。

您可以提交它们,但如果您碰巧克隆了 Git 存储库,这些将始终作为子模块添加,并且有人告诉我它们不是 Git 的最佳主意。我希望您在尝试更新时遇到问题。

我有很好的经验,不提交这些文件,而是在执行composer install 的本地 Git 存储库中添加一个签出后挂钩。我只提交composer.lock 文件。这样存储库会保持较小,但每次签出都会自动更新所有依赖项。

此外,我有 Phing 脚本运行测试,并且在此之前的一步,composer install 也被调用。

【讨论】:

    猜你喜欢
    • 2018-08-27
    • 2020-09-27
    • 2016-06-08
    • 2013-04-18
    • 2015-05-30
    • 2018-07-05
    • 2019-04-04
    • 2017-09-02
    • 1970-01-01
    相关资源
    最近更新 更多