V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
scylla
V2EX  ›  GitHub

请教:如果 forked github 上一个公开的项目,原项目删除了,那么 forked 的项目是不是也跟着一直删除?

  •  
  •   scylla · 2015-08-24 09:33:31 +08:00 · 13579 次点击
    这是一个创建于 3370 天前的主题,其中的信息可能已经有所发展或是发生改变。
    RT ,查看帮助后,答案是不会被删除的

    https://help.github.com/articles/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility/

    那么问题来了,新的这个 parent, 如果当时 fork 的时候,是旧的版本,那原项目后面的提交是不是也没了?比如:

    原项目当前版本是 5 , fork 一个子项目 fork1 (是众多 fork 之一)。
    过一段时间后,原项目提交了很多个新的版本,但是 fork1 并未跟着一起更新,
    原项目到版本 30 后,作者把原项目删除了
    github 会不会选择 folk1 作为新的 parent? 如果是,那原项目在版本 5 后提交的那些修改是不是没了?
    10 条回复    2015-08-24 12:25:17 +08:00
    cxe2v
        1
    cxe2v  
       2015-08-24 09:34:56 +08:00
    我的理解是, fork 就是开了一个分支, master 的修改跟 fork 是没关系的
    gDD
        2
    gDD  
       2015-08-24 09:40:40 +08:00
    最后一个问题,会的,假如有一个项目 M ,它有 N 个 fork ,当 M 删除之后, GitHub 会在这 N 的 fork 中选择一个作为 parent 。

    实例:
    https://twitter.com/gaomd/status/635066231607848960

    https://twitter.com/gaomd/status/635063836534398976
    https://twitter.com/gaomd/status/635064702016450560
    https://twitter.com/gaomd/status/635067220033302528
    ChiangDi
        3
    ChiangDi  
       2015-08-24 09:40:45 +08:00 via Android
    你试试就知道了
    gDD
        4
    gDD  
       2015-08-24 09:45:03 +08:00
    「 github 会不会选择 folk1 作为新的 parent?」:会的
    「如果是,那原项目在版本 5 后提交的那些修改是不是没了?」:是的

    再回答前一个问题,删除 parent repo 会不会连带删除 fork :

    https://twitter.com/gaomd/status/635061933478146048

    > 在 GitHub 里:一个公开项目要转为私有,会丢失 stars 和 watches ,所有 forks 都会保留并与之脱离关系;一个公开项目要删除,所有 forks 也会被保留下来。

    https://twitter.com/gaomd/status/635068087423729664

    > 与之反观的是 Private Repository , fork 它以后也是 private 的,且不需要 subscription ,删除它会连带删除所有 forks 。
    adrianzhang
        5
    adrianzhang  
       2015-08-24 10:18:35 +08:00
    仓库和分支,不要弄混概念。 fork 是对源 repo 的 clone ,如果你 clone 了一个 repo ,那么你本地做的任何 commit 都影响不了 origin ,除非做 push pull 。
    与 clone 一个仓库不同的是:如果你 fork 别人的项目,不经过别人允许就 push ,那会让原项目管理起来很累,所以 GitHub 的设计为只允许发 pull request ,由源项目决定是否 pull 你的 commit 过来合并。
    至于源项目删除,看是删除 repo 还是只删除某个 commit version 或者只删除某个 branch ,只要不删除 repo ,那么你 fork 出来,对方做了修改后删除某个 commit 或 branch ,你 pull request 发出后,对方如果愿意 pull 你的 repo 相应的 branch ,那源项目不受影响。

    V2EX 里发现好多关于 Git 的问题,都是因为对 Git 工作机制不理解。请参考
    http://v2ex.com/t/214595#reply10
    Tink
        6
    Tink  
       2015-08-24 10:26:33 +08:00   ❤️ 1
    fork.....复刻
    goodbest
        7
    goodbest  
       2015-08-24 10:35:21 +08:00
    @gDD
    @cxe2v
    @adrianzhang

    我知道有一个例外:如果源 repo 违反了 DCMA 等,那么可能 forked repo 也会同时被删。
    goodbest
        8
    goodbest  
       2015-08-24 10:36:14 +08:00
    @goodbest 当然这个删除是 github 来删的,不是原作者删的。
    buddha
        9
    buddha  
       2015-08-24 11:47:13 +08:00
    谁有 fork 过喝茶大神的最新版本 我想 fork 一个
    raincious
        10
    raincious  
       2015-08-24 12:25:17 +08:00
    @buddha 没啥可担心的。除了 Python 和 iOS 的客户端没有了,其他的依然在正常 commit 。

    而且就算 Python 和 iOS 的官方仓库没有了,还有很多 fork ,所有人都可以是主仓。

    退一步说,要是实在担心,还找个 fork 最高的 clone 下来保存到 Bitbucket 上。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1267 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 18:10 · PVG 02:10 · LAX 10:10 · JFK 13:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.