Git - 供应商文件夹修改 - .gitignore?

Posted

技术标签:

【中文标题】Git - 供应商文件夹修改 - .gitignore?【英文标题】:Git - Vendor folder modifications - .gitignore? 【发布时间】:2016-04-09 07:47:51 【问题描述】:

所以我有一个 Laravel 安装,其中我修改了 vendor 文件夹中的几个 Laravel 核心文件(主要是与邮件相关的)。

我希望克隆 repo 的每个人都明显有相同的变化。正确的处理方法是什么?

从 .gitignore 中完全删除 vendor 文件夹并将其全部编入索引? 将供应商文件夹保留在 .gitignore 中并为我修改过的特定文件添加例外? (但是当合作者安装 composer 时,这会覆盖这些文件,对吧?)

【问题讨论】:

您可以扩展这些文件并覆盖项目中的函数,而不是覆盖供应商文件。这样,供应商文件就不会受到影响,并且每个文件都将具有与您相同的配置。 【参考方案1】:

    Fork Laravel 仓库:https://help.github.com/articles/fork-a-repo/

    在分叉的仓库中创建一个新分支,分支名称必须以dev-为前缀,例如dev-bugfix

    在分叉的仓库中进行更改,提交它们,将它们推送到dev-bugfix 分支。

    在您的 composer.json 中包含分叉的 repo:


    "repositories": [
        "type": "package",
        "package": 
            "version": "dev-bugfix",
            "name": "laravel/framework",
            "source": 
                "url": "https://github.com/<your_github_username>/framework.git",
                "type": "git",
                "reference": "dev-bugfix"
            
        
    ],
    "require": 
        "laravel/framework": "dev-bugfix"
    

在此之后,您可以随时提取自定义更改,而无需将其提交到您的特定项目。

在此处阅读有关分叉和加载包的更多信息:https://getcomposer.org/doc/05-repositories.md#vcs


附言。修改供应商包文件是一种不好的做法,以后尽量不要这样做。

【讨论】:

我按照您的说明进行操作(克隆 Laravel-Framework 存储库,进行了更改,推送到 dev-bugfix 分支,编辑了 composer.json,删除了供应商文件夹并使用了 composer 安装)但遗憾的是由于某种原因我的更改没有不出现。这是安装的默认 Laravel 代码。 啊,我忘记作曲家更新了。现在它在克隆 dev-bugfix 后给了我以下错误:Script php artisan clear-compiled handling the post-install-cmd event returned with an error [RuntimeException] 错误输出:PHP 致命错误:类 'Patchwork\Utf8\Bootup' not在第 46 行的 /home/pepper/pepper/boots trap/autoload.php 中找到 @Basaa 这是另一个错误,你应该为它创建另一个问题:) 完成:***.com/questions/34616294/…

以上是关于Git - 供应商文件夹修改 - .gitignore?的主要内容,如果未能解决你的问题,请参考以下文章

Git排除不需要加入文档库的文件

.gitignore

Git忽略.git文件夹

Symfony2 - 创建自己的供应商包 - 项目和 git 策略

Symfony2,AWS Beanstalk:如何将供应商作为文件而不是 git-submodules 推送到 repo

PHPStorm、供应商和多个 Git 根