我没有写入权限,怎样修改别人的开源项目
先分清“使用项目”和“给项目贡献”
只想在本地学习或运行
通常 Clone 就够了。是否能修改、发布或商用仍要看 LICENSE。
想把修复交回原项目
如果你不是维护者,通常没有权限直接 push 到原仓库。常见路线是:
text
原作者仓库
↓ Fork
你的 GitHub 副本
↓ Clone
你的电脑
↓ 修改、Commit、Push
你的 GitHub 分支
↓ Pull Request
原作者仓库第一步:先判断这个项目是否欢迎贡献
在改代码前查看:
- README:项目用途和运行方式。
- LICENSE:允许怎样使用代码。
- CONTRIBUTING:贡献流程、测试和代码风格。
- Code of Conduct:社区交流规则。
- Issues:有没有
good first issue、beginner friendly或help wanted。
大功能先在 Issue 询问。否则你可能花三天完成一个维护者不准备接收的方向。
第二步:Fork 原仓库
在原仓库 GitHub 页面点击 Fork,选择自己的账号。
Fork 完成后,GitHub 上会出现一份属于你的远程副本,例如:
text
原仓库:original-owner/tiny-notes
你的 Fork:your-name/tiny-notesFork 发生在 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 向原仓库申请合并。