我遇到了以下问题:
我使用composer install
在我的项目中安装了一些依赖项(symfony)。
但是当我尝试提交时,它看不到任何文件。
我搜索过每个.gitignore文件,但我认为这不是因为忽略了这些文件 - 我已经使用SourceTree检查了这些文件,这些文件甚至没有被“忽略”或“全部”,他们只是“不要” t根本就存在于git中。
所以,我已经尝试了git add vendor/symfony/*
,git add vendor/symfony/*/*
等,但它只是在提交中添加了一些文件夹,而不是文件。
当我移动整个symfony文件夹时,没有任何变化。如果我重命名的话也一样。 但是,如果我在symfony文件夹中创建一些文件,它只包含其他文件夹(没有文件),它就会出现。但是 - 如果我在symfony中的另一个文件旁边创建文件,它将不会出现。
我查看了/.git/info/exclude,但也没有任何可疑之处。
平台: Windows 7 x64 git 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文件并在那里调用了所有文件后,我可以提交它。
感谢您的时间,帮助和建议。 :)
答案 0 :(得分:1)
我还是git的新手,但我可以分享自己添加文件的个人经验。我仍在使用各种程序,直到找到最适合我的方式。我已经安装了MySysGit,TortoiseGit,因为我使用GitHub,我有GFW程序,它随之安装PowerShell。
我要输入的第一件事是git status
。如果您有未跟踪的文件,请尝试添加不带*
的文件夹。我已经看到它以递归方式在我指定的文件夹及其子目录中添加文件。如果这不起作用,那就使用TortoiseGIt。
git add vendor/symfony
只要有一个供应商/ symfony你在shell中它应该添加文件及其子目录。
右键单击该文件夹,然后查找显示add
的蓝色十字。一旦它发现所有文件全部选择并让它处理它们。然后再次使用git status来查看更改内容以及可能还需要做什么。
只要有未跟踪的文件,TortoiseGit就应该添加它们和任何子目录。
如果git status
没有显示任何未跟踪的文件,并且硬盘驱动器上的git repo中没有供应商/ symfony,那么我会检查并查看composer install
是否还需要其他参数你希望他们去的文件。
答案 1 :(得分:1)
您需要将整个vendor
文件夹添加到.gitignore
中,而不是将这些依赖项提交到您自己的存储库中。
你可以提交它们,但是如果你碰巧克隆了Git存储库,那么它们将永远作为子模块添加,我被告知它们不是Git最好的想法。我希望您在尝试更新时遇到问题。
我有很好的经验,没有提交这些文件,但是在我执行composer install
的本地Git仓库中添加了一个post-checkout钩子。我只提交composer.lock
文件。这样,存储库保持很小,但每个结帐都会自动更新所有依赖项。
此外,我有运行测试的Phing脚本,在此之前的一步,composer install
也被调用。