我想知道是否可以接受的做法是不完全使用.gitignore并提交所有内容,至少对于中小型项目。
Laravel,就像我能想象的任何框架一样,有很多依赖关系,所以它们被设置为被git忽略。这是我的默认.gitignore
文件的样子:
/vendor
/node_modules
/public/storage
Homestead.yaml
Homestead.json
.env
我了解vendor
和node_modules
包含依赖项。 Homestead
文件是本地计算机设置,.env
包含环境设置,并且本地和远程服务器之间有所不同。我不确定storage
中有什么。
当我拉出很多依赖项时,我遇到了一个问题,我没有很好地跟踪它,我的node_modules
和vendor
目录爆炸成1 gb,包含150,000个文件。我很快意识到这是一个错误,并试图回滚到以前的版本。当然,这失败了,因为没有跟踪这两个文件夹。
在花了一天时间从头开始重建我的项目之后,我现在想要删除Laravel项目中的所有.gitignore
文件。鉴于我只在本地使用git并且不推送到服务器,提交所有内容是一个好主意吗?还有其他人这样做吗?
答案 0 :(得分:2)
两部分答案。
爆炸
您提到您的vendor / node_modules文件夹的大小已爆炸。即使你没有在版本控制中使用它们 - 如果正确使用composer和npm(通过使用npm的--save指令),所有模块应分别在composer.json和package.json中列出。这意味着即使已安装的库(在vendor + node_modules中)不在版本控制中,package.json和composer.json应该是 - 意味着你应该可以追溯到时间,并在那时安装软件包及时使用你的作曲家/包jsons。
我应该......
这个答案的第二部分是你应该在版本控制中包含vendor / node_modules吗?这是一个公平的问题,人们经常会问。我认为最终取决于你的部署意图。
你的起源(github,bitbucket等)你的空间基本上是无限的吗?你希望你的部署对你的生产版本来说是一个简单的超级document.getElementById("WhichEverMonth").innerHTML += n;
吗?您可以只提交所有内容,包括供应商库。这样您就可以完全控制服务器的内容。
实际上,当你推动时你可能需要git push
,所以反过来,你可能会开始考虑git hooks,并且这个过程开始变得有点复杂(但可以说更好/可扩展/健壮)。有了这些钩子,你可以开始看看针对package.json和composer.json文件运行composer install + npm install(没有git中的整个供应商库)。如果你走这条大道,你要确保你的作曲家/包jsons很好并且锁定 - 没有' 3.x.x'版本号 - 您希望锁定的版本,您知道工作和已经过测试。
答案 1 :(得分:2)
你通常应该gitignore依赖。 (请参阅Composer文档中的FAQ)。如果要回滚到以前的版本,只需删除vendor / node_modules文件夹,然后再次运行composer install
/ npm install
以在该特定的composer.json / package.json中安装依赖项。提交。
对于.env文件,除了服务器之间的设置不同这一事实外,它还包含私人信息,例如数据库凭据,所以除非你绝对肯定你不会推送它,否则你应该gitignore到其他人可以看到的地方(例如公共GitHub存储库)。
存储文件夹通常用于保存上传文件之类的内容,如果您忽略它,则取决于您的应用程序。