如何防止他人 Fork 我的代码仓库?

Christopher Mcclure
Christopher Mcclure
Seasoned entrepreneur with 15 years in tech startups.

这个问题挺有代表性的,很多刚接触代码托管平台的朋友都会有这个疑问。我用大白话给你解释一下。

首先,最直接的答案是:如果你的代码仓库(repo)是公开的(public),你没办法从技术上阻止别人 fork。

这听起来可能有点让人失望,但你得理解 GitHub 这类平台的初衷。它们的核心就是“开放”和“协作”。“Fork”这个功能,你可以把它理解成“复制一份到我的地盘”,这是所有协作的基础。如果你的代码是公开的,就相当于你把一本书放在了公共图书馆,任何人都可以借阅和复写。你没法阻止别人去复印这本书。

所以,如果你真的、真的不想让任何人复制你的代码,唯一的办法就是:

把你的仓库设为“私有”(Private)。

这是最简单粗暴,也是最有效的方法。一旦你的仓库是私有的,那就只有你自己和你明确邀请的协作者才能看到它。别人连你的仓库页面都访问不了,自然也就谈不上 fork 了。

这通常适用于以下情况:

  • 公司的商业项目代码。
  • 你个人接的私活儿,还没交付。
  • 一些你不想公开的敏感代码或个人实验。

但是, 我猜你可能还有另一种想法:“我希望我的项目能被大家看到,用来展示我的能力,或者找工作用,但我又不希望别人随便拿去用,特别是拿去卖钱。”

如果你是这种情况,那你需要关心的就不是“阻止 fork”,而是“许可证(License)”了。

给你打个比方:

  • 设置私有仓库,就像是把你的传家宝锁在自家保险柜里,谁也看不见,绝对安全。
  • 设置许可证,就像是你把这个传家宝放在博物馆里公开展示。虽然大家都能看、能拍照(相当于 fork),但展柜旁边立了个牌子,上面写着展览规则(这就是许可证),比如:“禁止用于商业用途”、“复制品必须注明出处”等等。

这个“许可证”是一份法律声明,它并不能阻止别人点击那个 fork 按钮,但它清楚地告诉了所有人,他们 fork 了你的代码之后,可以做什么,不可以做什么

  • 如果你不加任何许可证,默认情况下你的代码受版权法保护,理论上别人什么都不能做(不能使用、修改、分发)。但这在开源社区很模糊,大家可能会无视。
  • 如果你加上一个明确的许可证,比如 MIT(非常宽松)或者 GPL(要求修改后也必须开源),甚至是专门的“禁止商用”许可证。这就给所有使用你代码的人立下了规矩。

如果有人违反了许可证的规定,比如你明明写了“禁止商用”,他却拿你的代码包装一下开始卖钱,那你就可以从法律层面追究他的责任。

总结一下,给你两条路:

  1. 想绝对保密:那就直接把仓库设成 私有(Private)。这是唯一的“防 fork”技术手段。
  2. 想公开但保留权利:那就保持仓库 公开(Public),然后为它挑选一个合适的 许可证(License)。这不会禁用 fork 按钮,但能为你提供法律上的保护。

所以,问题的关键不是怎么去“防”,而是先想清楚你这个项目的目的:是想完全保密,还是想在公开的同时保护自己的权益。想清楚这个,你就知道该怎么做了。