Skip to content

我没有写入权限,怎样修改别人的开源项目 ​

先分清“使用项目”和“给项目贡献” ​

只想在本地学习或运行 ​

通常 Clone 就够了。是否能修改、发布或商用仍要看 LICENSE。

想把修复交回原项目 ​

如果你不是维护者,通常没有权限直接 push 到原仓库。常见路线是:

text
原作者仓库
  ↓ Fork
你的 GitHub 副本
  ↓ Clone
你的电脑
  ↓ 修改、Commit、Push
你的 GitHub 分支
  ↓ Pull Request
原作者仓库

第一步:先判断这个项目是否欢迎贡献 ​

在改代码前查看:

  1. README:项目用途和运行方式。
  2. LICENSE:允许怎样使用代码。
  3. CONTRIBUTING:贡献流程、测试和代码风格。
  4. Code of Conduct:社区交流规则。
  5. Issues:有没有 good first issue、beginner friendly 或 help wanted。

大功能先在 Issue 询问。否则你可能花三天完成一个维护者不准备接收的方向。

第二步:Fork 原仓库 ​

在原仓库 GitHub 页面点击 Fork,选择自己的账号。

Fork 完成后,GitHub 上会出现一份属于你的远程副本,例如:

text
原仓库:original-owner/tiny-notes
你的 Fork:your-name/tiny-notes

Fork 发生在 GitHub 服务器上,还没有把文件放到你的电脑。

第三步:Clone 自己的 Fork ​

打开你账号下的 Fork,点击 Code,复制 HTTPS 地址:

bash
git clone https://github.com/your-name/tiny-notes.git
cd tiny-notes

检查远程地址:

bash
git remote -v

这时 origin 应该指向你的 Fork。你有权限向它 push。

第四步:把原仓库登记为 Upstream ​

为了以后拿到原作者的新变化,再增加一个远程地址:

bash
git remote add upstream https://github.com/original-owner/tiny-notes.git
git remote -v

现在有两个远程简称:

text
origin      你的 GitHub 副本,通常向这里 push
upstream    原作者仓库,通常从这里获取最新变化

upstream 这个名字是惯例,不是 Git 强制规定。

第五步:为一个明确任务创建分支 ​

bash
git switch -c fix-homepage-typo

一个分支只做一个主题。不要在“修错别字”的 PR 里顺手重做导航和颜色。

第六步:修改、验证、检查并提交 ​

bash
git status
git diff
git add docs/index.md
git commit -m "Fix typo in homepage title"

提交前按照 CONTRIBUTING 运行项目要求的测试或构建命令。

第七步:Push 到自己的 Fork ​

bash
git push -u origin fix-homepage-typo

注意:这里推向 origin,也就是你的副本;不是直接推向原作者仓库。

第八步:向原仓库发 Pull Request ​

在 GitHub 点击 Compare & pull request,仔细确认:

text
base repository: original-owner/tiny-notes
base: main

head repository: your-name/tiny-notes
compare: fix-homepage-typo

人话:请把“我的 Fork 中 fix-homepage-typo 分支的变化”,合并到“原作者仓库的 main”。

标题写清楚修改,说明里写原因和验证方法。如果有对应 Issue,可以写 Fixes #编号,合并后 GitHub 会关联处理。

第九步:根据审核继续修改 ​

维护者留言后,在同一本地分支修改:

bash
git add 具体文件
git commit -m "Address review feedback"
git push

原 PR 会自动更新。不要为了每条意见新建一个 PR。

一个适合第一次练习的真实仓库 ​

First Contributions 专门让初学者完整练习 Fork、Clone、新建分支、修改名单、Commit、Push 和 Pull Request。它使用 MIT License,并提供简体中文说明。

第一次练习时,先严格按照该仓库当前 README 操作,因为仓库规则可能更新。

使用别人的项目时最容易误会的三件事 ​

Fork 以后项目就变成我的了吗 ​

不是。你获得的是一份技术副本,原项目版权和许可证仍然有效。

项目公开,所以可以直接商用吗 ​

不一定。公开可见不等于自动授权,必须看 LICENSE。

发了 PR,维护者必须合并吗 ​

不是。PR 是申请,维护者可以要求修改、暂缓或拒绝。先遵守贡献规则能提高被接收的机会。

为什么给陌生开源项目贡献时,通常先 Fork 再 Clone?

答案:因为你一般没有原仓库的 push 权限。Fork 先在自己的 GitHub 账号创建可写副本,Clone 再把这个副本放到电脑修改,最后通过 PR 向原仓库申请合并。

写给想驾驭 AI,而不只是依赖 AI 的 Vibe Coder。