防止公共GitHub仓库的复刻 | AI生成和翻译
问题: 在 GitHub 公共仓库中,如何阻止或禁止复刻(fork)?
答案:
你无法完全阻止对 公共 GitHub 仓库的复刻——这是 GitHub 的核心功能,也是开源社交契约的一部分。GitHub 没有提供原生设置来禁用公共仓库的复刻功能。
不过,根据你的实际目标,有以下几种可行方案:
方案 1:将仓库设为私有(唯一真正的技术封锁)
私有仓库支持复刻限制:
- 组织仓库 → 设置 → 成员权限 → 仓库复刻 — 取消勾选
- 这只对组织内的私有仓库有效
公共仓库不存在此控制选项。
方案 2:使用限制性许可证
你无法阻止 GitHub 界面上的复刻按钮,但可以通过法律手段限制他人对复刻的使用:
- AGPL-3.0 — 强制衍生作品开源
- BSL(商业源码许可证) — HashiCorp 使用,限制商业用途
- 自定义专有许可证 — 包含“禁止再分发、禁止复刻”条款
- 无许可证 — 根据《伯尔尼公约》,默认版权生效;他人无权合法再分发
# 在 LICENSE 文件中:
Copyright (c) 2026 李智维。保留所有权利。
未经许可,不得复制或分发本软件的任何部分。
这不会阻止按钮——但会使复刻行为构成法律侵权。
方案 3:GitHub Enterprise / 组织设置(针对组织公共仓库)
如果你使用的是 GitHub Enterprise,组织拥有更多控制权。但即便如此,公共仓库的复刻限制也不是标准功能。
诚实回答
| 目标 | 解决方案 |
|---|---|
| 完全阻止复刻按钮 | ❌ 公共仓库不可行 |
| 防止合法复用 | ✅ 限制性许可证 |
| 阻止组织内的复刻 | ✅ 设为私有 + 在组织设置中禁用复刻 |
| 完全阻止复刻 | ✅ 将仓库设为私有 |
如果你的目标是公开分享代码但限制使用(常见于商业开放核心项目),BSL 或自定义专有许可证是行业标准做法——HashiCorp 在 OpenTofu 复刻 Terraform 之前采取的就是这一策略。