2017-04-11 130 views
0

我有两台PC:A laptopdesktop computer
我在桌上型计算机上工作了两周,并在我的参数上定义了一些新参数。我今天需要使用我的笔记本电脑,因此我从我的然后我执行下面的命令来更新我的项目:。作曲家更新后,Symfony 3上的gitignore无法正常工作

php composer.phar update 

这个命令成功地更新了我的项目(参数和供应商目录)。有了这个,我现在可以运行我的项目。

的问题是,现在当我运行:

git status 

大量修改的文件出现在vendor目录。另外composer.lock文件apperarrs,我认为这是正确的,但不是供应商文件。

.gitignore包含,除其他外,以下行: vendor/*

我做了什么错?我该如何解决它?

回答

0

问题可能是双重的。

您可能在将其添加到gitignore之前检查了供应商目录中的文件,或者您可能不小心通过--force标志添加了忽略gitignore的标志。

另一个大问题是,你运行composer update这不仅会在你的composer.lock中安装依赖关系,它实际上会更新它们,这意味着你可能会得到不同的版本,然后是你以前开发的版本。下次您应该运行composer install(即使在已安装供应商的系统上)。这将按照所宣称的那样进行安装,它将安装composer.lock中定义的所有依赖关系。无论何时您签出该文件的较新版本,安装命令都会自动将您的本地供应商更新为其中定义的版本。这确保您始终使用相同的依赖项版本。

如果你想更新你的依赖关系,你可能需要使用composer update <dependency-name>来逐个更新它,然后这会再次更新你的composer.lock,你应该检查到git。

在你的情况下,你可能想要删除供应商文件夹,但一定要保留你的composer.lock。现在您可以提交此更改以确保您删除所有签入文件vendor /。之后,您的.gitignore应该再次运行并且运行composer install应该重新安装composer.lock中定义的所有内容,并且在运行git status时,您不应该在工作目录中看到任何更改。如果你有可能需要调整.gitignore,例如尝试/vendor而不是vendor/*

+0

谢谢,下次我会用'composer install'。现在,我从GIT恢复了以前的composer.lock。我删除了我的供应商文件夹,然后运行'composer install'。似乎没问题。唯一的一点是输出警告:'警告:锁定文件没有及时更新composer.json中的最新变化。你可能会过时依赖关系.'还有什么方法可以恢复composer.json文件? –

+0

如果你只是恢复它,你可以做一个简单的技巧来解决这个问题:'composer update --lock'。这只会更新锁文件中的哈希,而不会更新依赖关系。这通常适用于我。 – dbrumann

+0

如果你想更深入地了解如何与作曲家合作,你可能想看:http://knpuniversity.com/screencast/composer(免责声明:我还没有看过它,但从包含的主题列表中听起来不错)。 – dbrumann