移除不需要的GitHub复刻 | AI生成和翻译
明白了。简短版:你无法直接删除别人的复刻(fork)。但你可以(a)联系对方,(b)清理敏感内容并锁定未来泄露,(c)在理由正当时通过 GitHub 官方渠道(DMCA 或客服)。以下是一个简洁、无表格的方案,非常适合个人博客。
1) 首先,联系复刻者(最快途径)
在他们的复刻仓库中提交一个 Issue 或发送邮件。这里有一个可以直接复用的简洁模板:
你好 @tornadobaflocer —— 这个复刻包含了我的个人笔记和活动历史。我发布这个仓库只是为了使用
lzwjava.github.io域名,并非用于重新分发。请删除这个复刻。我将把源代码设为私有,仅保留编译后的网站资源公开。 感谢理解。
如果对方删除了,问题就解决了。如果没有,请继续。
2) 了解 GitHub 会做什么,不会做什么
- 删除或将你的公开仓库设为私有,不会移除现有的公开复刻。公开复刻会保持公开,并脱离成为独立的“网络”。(Stack Overflow)
- 你只有作为该复刻的管理员时才能删除它(而在此情况下你不是)。(Stack Overflow)
3) 如果复刻未经许可复制了你的版权内容
你可以向 GitHub 提交 DMCA 删除通知。这是官方途径,用于移除跨复刻的侵权内容。请阅读政策和“如何提交”指南;其中解释了必须包含哪些信息。(GitHub 文档)
提示:如果你的仓库没有许可证,则默认适用版权法,这会加强删除请求的效力(他人没有重用权利)。即使你使用了宽松的许可证,DMCA 仍然有效,但情况会更复杂一些。
4) 防止未来的复刻暴露你的源代码
保持域名公开,但通过拆分仓库来保持源代码私有:
- 私有源代码仓库(例如
blog-source):存放你的 Jekyll/Hugo 内容、草稿、笔记、配置文件。 - 名为
lzwjava.github.io的公开部署仓库:仅包含构建后的网站文件(HTML/CSS/JS)。没有草稿,没有历史记录。
GitHub Pages 网站在仓库设为私有时也仍然是公开的(除了 Enterprise Cloud 中的私有 Pages)。因此,对于个人博客,双仓库“仅部署”设置是安全的模式。(GitHub 文档)
你现在可以使用的部署选项:
- 将生成器的
public/或docs/输出推送到lzwjava.github.io。(Quarto) - 或者在
blog-source中使用 GitHub Actions 工作流,该工作流构建输出并将其强制推送到lzwjava.github.io仓库的默认分支。(文档:选择“从分支发布”或“使用 Actions 发布”流程。)(GitHub 文档)
5) 从历史记录中清除所有敏感内容(你自己的和任何剩余的副本)
- 轮换任何暴露的令牌/密钥(假设它们已被泄露)。
- 使用
git filter-repo(GitHub 现在推荐此工具)或 BFG(对于常见情况更快)重写历史记录以移除敏感文件/路径。然后强制推送。(GitHub 文档)
这本身不会修复其他人的复刻,但它会清理你的规范仓库,并通过显示内容已被移除来支持任何删除请求。
6) 可选加固措施
- 添加明确的 LICENSE(如果你想明确限制重用)。
- 在 README 中添加免责声明:“此仓库仅用于存放编译后的网站输出。请勿复刻源代码;它是私有的。”
- 如果你将来在组织中托管,可以在整个组织范围内以及按仓库禁用私有仓库的复刻功能(这不能阻止公开代码的克隆,但有助于保护私有仓库)。(GitHub 文档)
具体后续步骤(有效顺序)
- 请求 @tornadobaflocer 删除复刻(使用上面的消息)。
- 立即将你的源代码移到一个新的私有仓库(
blog-source)。 - 将
lzwjava.github.io设为公开的、仅用于部署的仓库,只包含构建后的文件。配置 Pages 从其分支/文件夹发布。(GitHub 文档) - 重写你旧公开仓库的历史记录以移除敏感部分,然后将其归档或删除。(GitHub 文档)
- 如果他们拒绝并且你希望将其撤下,向 GitHub 提交 DMCA 删除通知。(GitHub 文档)
如果你需要,我可以按照 GitHub 要求的精确格式起草 DMCA 通知,以及一个最小的 GitHub Actions 工作流,用于从 blog-source 构建你的网站并仅将编译后的文件推送到 lzwjava.github.io。