指南 · 03

没有许可证的代码意味着什么

没有许可证文件的公开代码,默认所有权利都归版权所有者。本文说明 GitHub 条款允许的范围、想使用时的办法,以及如何为自己的仓库添加许可证。

最后核对:2026-09-23

公开 ≠ 许可

即使是在 GitHub 上公开的仓库,如果没有 LICENSE 文件,其代码也不是开源的。版权在编写代码的那一刻自动产生(大多数《伯尔尼公约》成员国),如果没有另行许可,只有版权所有者才能复制、修改、分发和创作衍生作品。GitHub 文档也说明,没有许可证时适用默认的版权法,版权所有者保留所有权利,他人不得复制、分发或创作衍生作品。

GitHub 条款允许的范围

根据 GitHub 服务条款(D.5「授予其他用户的许可」),在公开仓库上传内容的人,授予 GitHub 用户在 GitHub 服务内使用、显示和执行该内容,以及在 GitHub 功能允许的范围内(如复刻)复制该内容的权利。也就是说,以下行为是可以的。

但条款并不允许超出这一范围的权利,例如放进自己的产品中分发,或在其他地方公开修改版

想使用无许可证代码时

  1. 向版权所有者请求:通过 issue 或电子邮件请求添加许可证。很多情况下只是忘了,对方会欣然加上 MIT 等许可证。
  2. 获得书面许可:如果难以添加许可证,可以另行取得写明使用范围的许可并妥善保存。
  3. 寻找替代品:寻找功能相同的开源库。
  4. 自己实现:不看代码,只参考规范或行为重新编写(即所谓净室实现)。照抄原代码可能构成复制,需要注意。
README 中只写了「随便用」的情况比较模糊。虽然意图看起来明确,但范围(修改、再分发、商业使用)并不清楚,请求对方添加标准许可证更为稳妥。

常见的模糊情况

如何为自己的仓库添加许可证

  1. 生成器中选择许可证,填写年份和版权所有者,获取 LICENSE 文件。
  2. 将其提交到仓库根目录。GitHub 会识别此文件,并在仓库信息中显示许可证。
  3. package.jsonCargo.tomlpyproject.toml 等文件的 license 字段中写上 SPDX 标识符(SPDX 指南)。
  4. 如果混有他人的代码,另行整理该部分的许可证和声明(应用实务)。

有意不添加许可证的情况

像作品集或作业这样只想展示代码、不希望被重复使用时,不添加许可证也是一种选择。此时在 README 中写上「保留所有权利(All rights reserved)」和联系方式,可以减少误解。但只要是公开仓库,就无法阻止 GitHub 条款所允许的浏览和复刻。

本文为一般信息,不构成法律意见。重要决定请咨询专业人士。

参考来源