- 文档
- 教程
- 开源治理
【免费下载链接】first-contributions
🚀✨ Help beginners to contribute to open source projects
本指南以开源仓库 first-contributions 的核心入门文档为主体,系统讲解初学者完成第一次开源贡献所需的完整 Git 工作流:Fork 仓库 → 克隆到本地 → 创建分支 → 修改并提交 → 推送远程 → 提交 Pull Request。读完本文,你将能独立完成一次真实的开源贡献,并掌握分支管理、远程同步与冲突处理等后续进阶技能。
文档背景与本指南的定位
本文基于仓库中的入门文档 README.pcm.md 展开。该文档是项目主 README 的尼日利亚皮钦英语(Nigerian Pidgin)翻译版本,与 主 README 内容完全对应:项目定位是帮助初学者以最简单的方式完成第一次开源贡献(项目描述为 "Help beginners to contribute to open source projects")。仓库根目录的 Contributors.md 已有近六千行贡献者名单,每位贡献者的名字正是通过本文将要讲解的流程逐步添加进去的——它本身就是这套工作流最好的运行示例。
文章中所有命令均以终端操作为主。如果你不习惯命令行,仓库还提供了使用图形界面工具的教程,可在文章末尾的「图形界面工具」一节查看。
开始之前:准备 Git 环境
整个流程的第一步是确认本机已安装 Git。在终端执行:
git --version如果提示找不到命令,需要先完成 Git 的安装与基础配置。安装完成后,建议先用git config配置用户名和邮箱,因为提交(commit)会记录作者信息。关于用户信息、默认编辑器等配置项的详细说明,可参考仓库文档 configuring-git.md。
第一步:Fork 仓库
进入 first-contributions 仓库页面,点击页面顶部的Fork按钮。
Fork 的本质是在你自己的账号下创建一份该仓库的完整副本。这一步之后,你会拥有一个属于自己的first-contributions仓库,后续所有修改都发生在你的副本上,不会影响原始仓库。
第二步:克隆仓库到本地
克隆(clone)是把远程仓库的内容下载到本机。操作如下:
- 登录 GitHub,打开你刚才 Fork 出来的仓库;
- 点击页面上的Code按钮(建议切换到 SSH 标签页),点击复制按钮把仓库地址复制到剪贴板;
- 打开终端,执行
git clone命令:
git clone "url wey you just copy"其中"url wey you just copy"(去掉引号)替换为刚复制的地址,即你 Fork 出来的仓库地址。例如:
git clone git@github.com:this-is-you/first-contributions.git这里的this-is-you是你的 GitHub 用户名。执行成功后,远程仓库的全部内容就被复制到了本机。如果想在本地查看本仓库(镜像)的代码而不进行贡献流程,也可以直接克隆镜像地址:git clone https://gitcode.com/gh_mirrors/fi/first-contributions.git。
第三步:创建分支
先进入仓库目录(如果还没进去的话):
cd first-contributions然后使用git switch命令创建一个新分支:
git switch -c your-new-branch-name例如:
git switch -c add-desmond-ezo-ojile分支是 Git 的核心概念之一:它让你在独立的开发线上修改代码,而不会干扰主分支(main)。这也是后续 Pull Request 能够「按分支评审合并」的基础。
兼容性提示:如果执行git switch时出现类似 "Git:switchis not a git command" 的错误,说明你的 Git 版本较旧。此时改用等价的git checkout命令即可:
git checkout -b your-new-branch-name(此后备方案详见主文档 README.md 中的说明。)
第四步:修改文件并提交
现在开始做出你的实际贡献。用文本编辑器打开仓库根目录的 Contributors.md 文件,把你的名字添加进去。注意:不要加在文件开头或结尾,而是加在文件中间任意位置,这是为了让多位贡献者的提交减少冲突概率。
保存文件后,回到项目目录执行git status,你会看到该文件已被标记为有变更:
git statusgit status会列出工作区中所有改动,是后续每个步骤前都建议执行的状态检查命令。
接下来把改动添加到暂存区(staging area),使用git add:
git add Contributors.mdgit add只暂存你明确指定的文件,这给了你精确控制「哪些改动进入下一次提交」的能力。
然后提交这些改动:
git commit -m "Add your-name to Contributors list"把your-name替换成你自己的名字。-m参数用于附加提交信息,一条清晰、描述性的提交信息是开源协作的基本礼仪。
第五步:推送到 GitHub
提交只发生在本地,接下来要把本地分支推送到你的 GitHub 仓库:
git push -u origin your-branch-name把your-branch-name替换为你第三步创建的分支名。-u参数会把本地分支与远程分支建立跟踪关系,此后在该分支上直接执行git push即可,无需再指定远程和分支名。
推送失败:认证错误处理
如果推送时遇到认证错误,最常见的情形是 GitHub 自 2021 年 8 月 13 日起移除了密码认证,错误信息通常形如:
remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. fatal: Authentication failed for 'https://github.com/<your-username>/first-contributions.git/'解决办法是按 GitHub 官方指引,为账号生成并配置 SSH 密钥(SSH key),以 SSH 方式认证。
此外,可用以下命令检查当前的远程地址配置:
git remote -v如果输出类似于:
origin https://github.com/your-username/your_repo.git (fetch) origin https://github.com/your-username/your_repo.git (push)说明仍然走 HTTPS 方式、会反复提示输入用户名密码。可改用 SSH 地址:
git remote set-url origin git@github.com:your-username/your_repo.git这样即可避免后续的认证报错。
第六步:提交 Pull Request
推送成功后,回到你在 GitHub 上的仓库页面,页面上会出现一个Compare & pull request按钮,点击它,然后提交 Pull Request。
Pull Request(简称 PR)是开源协作的关键环节:它向原始仓库的所有者发出「请合并我分支上的这些改动」的请求。提交后,项目维护者会审查你的改动并合并到主分支;合并完成后,你会收到一封变更已合并的通知邮件。
至此,你已完整走通了开源贡献的标准流程:fork → clone → edit → pull request。这个四步工作流在几乎所有 GitHub 协作项目中都会反复遇到。
贡献完成之后:进阶主题
第一次贡献只是起点。仓库在 additional-material.md 中整理了一批进阶 Git 场景,以下两个与日常协作关系最密切:
保持 Fork 与上游仓库同步
随着项目持续演进,你 Fork 的仓库会落后于原始仓库。开源协作中常见「三角工作流」:原始公开仓库 → 你的 GitHub Fork → 你的本地仓库。同步的基本思路是先把原始仓库(称为upstream)的最新内容拉到本地,再推送到你的 Fork。
首先为本地仓库添加上游远程(只需配置一次):
git remote add upstream https://github.com/firstcontributions/first-contributions.git接着切换到 main 分支(可用git status第一行确认当前分支):
git checkout main然后拉取上游最新版本并变基到本地 main 分支:
git fetch upstream git rebase upstream/main最后推送到你的 Fork(即名为origin的远程):
git push origin main如果想一步完成「拉取并合并上游 main」的操作,可以直接使用:
git pull upstream main建议在 GitHub 提示「你的分支落后于上游 N 个提交」时执行上述同步流程。完整说明见 keeping-your-fork-synced-with-this-repository.md。
解决合并冲突
当不同分支修改了同一处内容、Git 无法自动合并时,就会产生合并冲突。冲突文件中会插入如下标记:
<<<<<<< HEAD 你的分支上的改动 ======= 来自其他分支的改动 >>>>>>> branch-name其中<<<<<<< HEAD表示当前分支的改动,=======是分隔线,>>>>>>> branch-name表示另一个分支的改动。解决步骤是:用git status定位冲突文件(位于 "Unmerged paths" 列表)→ 编辑文件、保留期望的改动并删除全部冲突标记 → 用git add <filename>标记已解决 → 最后提交合并。详细流程见 resolving-merge-conflicts.md。
其他常见场景索引
仓库的进阶文档还覆盖了以下高频场景,均位于docs/additional-material/git_workflow_scenarios/目录下:
- 修改最近一次提交(amending-a-commit.md):调整提交信息或补充遗漏的改动;
- 撤销已推送的提交(reverting-a-commit.md);
- 撤销/重置本地提交(undoing-a-commit.md);
- 将多个提交压缩为一个(squashing-commits.md):常用于响应评审者「把提交合并成一个并附上信息性提交信息」的要求;
- 移除文件与删除分支(removing-a-file.md、removing-branch-from-your-repository.md)。
图形界面工具
如果你更习惯图形化操作而非命令行,仓库在docs/gui-tool-tutorials/下提供了多套工具的入门教程,例如 GitHub Desktop、Visual Studio Code、GitKraken 等,覆盖了 Windows、macOS 等不同平台。
结语:一份可复用的贡献检查清单
回顾全文,一次标准贡献可以浓缩为六步检查清单:
- Fork:在原始仓库页面点击 Fork,获得自己的副本;
- Clone:复制 Fork 地址并
git clone到本地; - Branch:
git switch -c your-branch-name创建独立分支(旧版 Git 用git checkout -b); - Commit:修改 Contributors.md →
git status检查 →git add Contributors.md→git commit -m "Add your-name to Contributors list"; - Push:
git push -u origin your-branch-name,遇认证错误时改用 SSH key 或git remote set-url调整远程地址; - Pull Request:点击Compare & pull request提交 PR,等待维护者审查合并。
这套流程不仅适用于 first-contributions 仓库,也是所有 GitHub 开源项目通用的协作范式。完成首次贡献后,建议继续阅读仓库中的 进阶文档 与各语言版本(包括中文版 README),逐步从「会提 PR」成长为熟练的开源贡献者。
- 文档
- 教程
- 开源治理
【免费下载链接】first-contributions
🚀✨ Help beginners to contribute to open source projects
相关推荐
first-contributions 实战指南:从 Fork 到 Pull Request 的首次开源贡献完整流程
first contributions 实战指南:从 Fork 到 Pull Request 的首次开源贡献完整流程 导读 本文基于 first contrib
文档教程开源治理first-contributions 首次开源贡献实战:从 Fork 到 Pull Request 的完整指南
first contributions 首次开源贡献实战:从 Fork 到 Pull Request 的完整指南 本文以 GitHub 加速计划 fi 镜像中的
文档教程开源治理first-contributions 首次开源贡献实战指南:从 Fork 到 Pull Request 的完整 Git 流程
first contributions 首次开源贡献实战指南:从 Fork 到 Pull Request 的完整 Git 流程 本篇指南以 first cont
文档教程开源治理
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考