将GitHub项目的fork发布到新的NPM模块但保留与原始合并的选项?

时间:2015-06-12 03:59:09

标签: node.js git github merge fork

GitHub和NPM上存在高质量的开源回购,拥有广泛的用户群。

我已经分配了这个项目并做了大量的扩展。我认为已准备好合并回来。但(适当地)它的项目所有者谁打电话不是我。现在已经好几周没有回复了。

有几个用户已经在回购问题讨论中询问这个被合并回来了,更多的用户直接与我联系以作为一个单独的项目发布到NPM。

认真的开发人员可以通过GitHub获取新版本,但它只有原始来源,而不是链接/缩小/定制版本,因为README表示在合并回来并且版本号递增之前不会运行make dist

认为它应该像创建这个fork的fork一样简单,并将其作为新的NPM模块发布。但是GitHub不允许我这样做(“你已经在看这个项目了”)

有没有办法可以将其作为新的NPM模块发布,但仍保留

的选项
  1. 我的fork向原始提交拉取请求
  2. 我的fork用于从原始
  3. 获取上游更改
  4. 我的子fork从我的fork(以及原来的)
  5. 获取上游更改

    我是否在新的电子邮件地址下创建新的GitHub帐户?

    Forking a fork of my repo in GitHub

2 个答案:

答案 0 :(得分:6)

如何分叉&补丁npm模块

  1. 在GitHub上挖掘项目。
  2. 将叉子克隆到您的机器
  3. 修复错误或添加所需功能。
  4. 将您的提交推送到GitHub上的分支(如果您希望为原始回购创建PR,请使用分支)。
  5. 在GitHub上打开你的fork,找到并复制你所做的最新提交的SHA。
  6. 打开package.json文件,用GitHub repo中的信息替换MODULE,USER,REPO和SHA。

    "MODULE": "https://github.com/USER/REPO/tarball/SHA",
    

    例如:从https://github.com/v8/v8/blob/3b39fc4dcdb6593013c497fc9e28a1d73dbcba03/src/objects.cc#L5140

    获取tarball链接
    "react-remarkable": "https://github.com/HelloKip/react-remarkable/tarball/9549e776136096b827f3a0823329ad997416e364",
    
  7. 运行npm i以安装模块依赖项。

  8. 利润!
  9. 改编自this commitdebuggable.com

答案 1 :(得分:3)

@ user2943490为您提供了使用分支而不是其他分支的正确解决方案。

让我扩展一下,回答你关于仍能够推或拉几个方向的问题。 git,或者说它的数据结构的设计方式使得它可以始终在任意存储库之间推送和拉动,无论如何。即使他们从来没有共同的祖先,也没有区别。

是的,你可能会遇到疯狂的冲突,显然如果你试图合并完全不相关的文件,可能会发生混乱,但仍然可能发生。 Git只关心文件的实际内容,而不关心它们从哪里分叉。

在您的示例中,由于与上游进行公共提交,因此它不会成为问题。