composer需要尚未合并到分支的特定git提交

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了composer需要尚未合并到分支的特定git提交相关的知识,希望对你有一定的参考价值。

在我的项目中,我需要使用composer的包。今天早上我知道有一个合并的拉请求一夜之间但是在一个代码类中有一个坏函数打破它。有人修复了错误并进行了提交,但尚未合并到master分支。

所以我更新composer.json并像这样设置sha1

"require": {
    "vendor/package": "dev-master#d0d6b33897e1739c55a338fdd0a544bfe5a10721"
}

并运行composer update并得到

d0d6b33897e1739c55a338fdd0a544bfe5a10721 is gone (history was rewritten?), recovered by checking out 33e68f9cec94d52f40192c576d7441ea12852b99

我想在未合并的提交中做什么?原谅我的无知,如果这是愚蠢的 - 对作曲家来说相对较新。我可以手动删除代码,直到它被推,但我主要是出于好奇。

答案

我猜(实际上并不知道)你不能包含这个提交不在的分支的提交。如果该提交未合并到master,则不能将其包含在其哈希中,同时指定您需要“dev-master”。

您应该指定修复程序所在的其他分支。如果尚未将该分支移动到Packagist / Composer已知的存储库中,则可能还必须包含实际提交者的其他存储库,以使Composer能够找到该分支并进行提交。

另一方面:为什么要打扰不稳定的主分支?您是否考虑过需要稳定的标记版本?生活变得那么容易了(而且我知道,由于我不理解的原因,一些存储库管理员会避免标记版本,从而使每个人的生活变得更加悲惨,但希望它能够满足他们的用例)。

另一答案

下面的示例使用了bitbucket示例,但您可以轻松地使用github执行相同的操作

{
    "name": "YOUR_VENDOR_NAME/YOUR_PROJECT_NAME",
    "description": "PPROJECT DESCRIPTION",
    "type": "project",
    "license": "proprietary",
    "authors": [{
      "name": "YOUR_NAME",
      "email": "YOUR_EMAIL"
    }],
    "minimum-stability": "stable",
    "repositories": [{
      "type": "package",
      "package": {
        "name": "YOUR_PACKAGE_VENDOR_NAME/YOUR_PACKAGE_NAME",
        "version": "0.0.1",
        "type": "library",
        "source": {
          "type": "git",
          "url": "git@bitbucket.org:BITBUCKET_USERNAME/REPOSITORY_SLUG.git",
          "reference": "COMMIT_HASH"
        }
      }
    }],
    "require": {
      "YOUR_PACKAGE_VENDOR_NAME/YOUR_PACKAGE_NAME": "0.0.1"
    }
}

以上是关于composer需要尚未合并到分支的特定git提交的主要内容,如果未能解决你的问题,请参考以下文章

Git:如何防止特定的提交被合并到另一个分支中?

如何在依赖于另一个尚未合并的 git 分支的新 git 分支上工作?

基本 Git 工作流程:为啥我提取的分支中的代码尚未提交?

git合并分支时禁止合并特定文件

GIT 工作流程:将大部分功能分支合并到 master 中,省略一个特定的提交?

强制 Git 在合并期间始终选择特定文件的较新版本?还是只提交特定的分支?