跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 开源项目可以 Fork 成私有库吗?然后私有库可以提交 PR 吗?
未分類
22 7 月 2020

开源项目可以 Fork 成私有库吗?然后私有库可以提交 PR 吗?

开源项目可以 Fork 成私有库吗?然后私有库可以提交 PR 吗?

資深大佬 : tlerbao 7

开源项目可以 Fork 成私有库吗?然后私有库可以提交 PR 吗?

假设有一个开源项目

我想用这个开源项目开发产品(私有不开源),但同时还想给这个项目贡献代码(提交 PR )。

如上需求最专业且简单的做法是怎样的?

大佬有話說 (17)

  • 資深大佬 : Howlaind

    看协议嘛,像 GPL 肯定就不能闭源,而 Apache 协议就可以

  • 主 資深大佬 : tlerbao

    @Howlaind 哦,并没有担心协议,来问就是肯定行的,我是想问技术上能不能实现,毕竟 fork 过来的库是共有的。

  • 資深大佬 : mercury233

    clone 上游到本地,在自己账号新建一个空私有库,remote add 并 push
    需要 PR 的,再 fork 一个,然后把对应的分支推上去

  • 主 資深大佬 : tlerbao

    @mercury233 没太明白呢?

  • 資深大佬 : passerbytiny

    fork 跟开源协议没关系,跟 github/gitlab 的用户协议有关。按照 github 的用户协议,公开库不管任何协议,都允许被 fork,这样明显是不允许 fork 后变成私有库的(不然被 fork 的库就成袁大头了)。

    fork 不是 PR 的充分条件,任何库都可以提 PR 的,不一定非要 fork 。然而你这私有库给公有库提交 PR,公开库那边只能看到 PR 却无法追踪源分支,大概率不被接受,可能还要挨骂。

  • 資深大佬 : mercury233

    @tlerbao 就是不 fork 而直接新建一个私有库

  • 資深大佬 : passerbytiny

    你要私有开发,大概率要添加敏感内容,这样你的分支也不可能原封不动的合并回去。你可以搞两个库,一个是 clone 的私有库,一个是 fork 的公开库,前者搞开发,后者搞贡献,两者之间搞脱敏合并(手动合并,或者自动合并后再 rebase -i )。

  • 資深大佬 : otakustay

    fork 本来就只是一个标准的 git 操作(外加给你标一个 forked from xxx 的标记),不要那个标记的话自己 git 操作就行了

  • 主 資深大佬 : tlerbao

    @passerbytiny 不 fork 发起 pr 的时候没办法选择目标仓库的吧

  • 主 資深大佬 : tlerbao

    @passerbytiny 我本来就是想搞两个,私有库自建,贡献代码库 fork,然后主在私有库工作开发,当发现有代码比较合适贡献,手动覆盖到 fork 的库然后 push 提交 pr

    觉得麻烦所以来问问

  • 資深大佬 : joesonw

    fork 到公开库 forked-public, upstream 是原有库

    fork forked-public 到 forked-private, upstream 是 forked-public. 然后要 PR 的 cherrypick 出来 push 到 upstream forked-public. 然后在 forked-public 上面开 PR

  • 主 資深大佬 : tlerbao

    @joesonw 好简练专业,我要消化一下。

  • 資深大佬 : passerbytiny

    @tlerbao 如果你的私有代码跟贡献代码差别多的话,那就没有比现在更省事的方式了。这种方式虽然麻烦,但是是有好处的,私有代码转换到公开代码的过程是很宝贵的经验。

    PR 那一块,你可以尝试在目标分支选择源分支来发起 PR,再不行还可以发 git 补丁。

  • 資深大佬 : jatai

    我看着你们

    满怀羡慕

    你们拥有了我们曾经梦寐以求的权利

    复制粘贴的权利

    向你们的专业致敬

    你们正在把开源的变成自己的

    把自己的变成祖传的

  • 資深大佬 : CRVV

    到 GitHub 的仓库设置里面,如果是一个 fork 来的仓库,会显示 “You cannot change the visibility of a fork. Please duplicate the repository.”

    所以,开源项目不可以 Fork 成私有库,也没有然后了。

    顺便一说,开源项目在闭源项目里用是允许的,包括 GPL 。到 redistribution 也就是再发布软件的时候才有侵权的问题。比如,在不以 GPL 重新发行新代码的情况下,一家公司可以拿 Linux 内核改一改用在自家内部的机器上,但不能拿 Linux 内核改一改然后拿去重新发布(比如拿去卖,比如把代码公开了但是不用 GPL 授权)。

  • 主 資深大佬 : tlerbao

    @jatai 这位朋友是来灌水的吗?

  • 主 資深大佬 : tlerbao

    @joesonw 开源库 到 forked-public,然后没办法从 forked-public 到 forked-private ; forked-private 只能是把 forked-public 克隆到本地,然后把 private 的 remote 地址填进去。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具