first-contributions 实战指南:从 Fork 到 Pull Request 的首次开源贡献完整流程
文档教程开源治理【免费下载链接】first-contributions✨ Help beginners to contribute to open source projects项目地址https://gitcode.com/gh_mirrors/fi/first-contributions点击查看免费下载本指南以开源仓库 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 gitgithub.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 addgit 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 gitgithub.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到本地Branchgit switch -c your-branch-name创建独立分支旧版 Git 用git checkout -bCommit修改 Contributors.md →git status检查 →git add Contributors.md→git commit -m Add your-name to Contributors listPushgit 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项目地址https://gitcode.com/gh_mirrors/fi/first-contributions点击查看免费下载相关推荐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),仅供参考

相关新闻

EMBOSS在Linux下的安装与核心功能实战指南

EMBOSS在Linux下的安装与核心功能实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/19 16:36:27 阅读更多 →
Hugo 站点方法 Site.Pages 详解:获取当前语言全部页面的集合

Hugo 站点方法 Site.Pages 详解:获取当前语言全部页面的集合

开发工具前端CLI 【免费下载链接】hugo The world’s fastest framework for building websites. 项目地址: https://gitcode.com/gh_mirrors/hu/hugo 点击查看 免费下载 Site.Pages 是 Hugo 模板中用于获取站点页面集合的核心方法,它返回当前语言下所有…

2026/9/19 16:36:27 阅读更多 →
迪思科半导体后道工序设备:划片、磨片、抛光工艺参数与选型指南

迪思科半导体后道工序设备:划片、磨片、抛光工艺参数与选型指南

简介:这份PDF资料聚焦迪思科科技(中国)有限公司及其多款半导体加工设备,面向半导体制造、封装测试领域的工程师、工艺开发人员及高校相关专业师生,帮助读者系统了解划片、磨片、抛光与激光切割设备的选型思路与技术特点…

2026/9/19 16:35:26 阅读更多 →

最新新闻

CE+Lua+D3D Hook:构建游戏运行时监控平台

CE+Lua+D3D Hook:构建游戏运行时监控平台

1. 这不是“改数值”那么简单:CE Lua D3D Hook 的真实能力边界你搜“Cheat Engine汉化”“cheat engine中文”,点开一堆教程,教你怎么找血条、改金币、冻结值——这确实是CE的入门姿势,但只用了它不到5%的潜力。真正让老手在深夜…

2026/9/19 18:22:15 阅读更多 →
ESP32通过Arduino接入OneNet云平台:MQTT协议与代码实现详解

ESP32通过Arduino接入OneNet云平台:MQTT协议与代码实现详解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/19 18:22:15 阅读更多 →
@ToolParam 缺 example,Codex 走 TaoToken 对着 ExtendedJsonSchemaGenerator 改

@ToolParam 缺 example,Codex 走 TaoToken 对着 ExtendedJsonSchemaGenerator 改

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/19 18:22:15 阅读更多 →
STM32H743多通道ADC+DMA配置详解与踩坑实战

STM32H743多通道ADC+DMA配置详解与踩坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/19 18:22:15 阅读更多 →
TaoToken 这条通道,能过 OpenSquilla 的 onboard 认证吗?

TaoToken 这条通道,能过 OpenSquilla 的 onboard 认证吗?

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/19 18:22:15 阅读更多 →
Unity接入穿山甲广告SDK全流程实战:从集成到上线避坑指南

Unity接入穿山甲广告SDK全流程实战:从集成到上线避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/19 18:21:14 阅读更多 →

日新闻

BP神经网络时序预测:滑窗长度与多窗口平均策略

BP神经网络时序预测:滑窗长度与多窗口平均策略

简介:面向机器学习、深度学习与数据建模学习者的一份完整研究文献,聚焦BP神经网络在农业产量预测中的应用。文档以1980—2018年全国棉花产量为样本,系统讲解数据归一化处理、激活函数原理、多层神经网络结构搭建及训练流程,展示敏…

2026/9/19 0:00:30 阅读更多 →
Transformer训练实时监控实战:基于MindSpore的损失曲线可视化方案

Transformer训练实时监控实战:基于MindSpore的损失曲线可视化方案

上个月调一个Deformable DETR模型,在单卡上要跑将近两天。第二天早上我下意识打开终端翻日志,发现loss从凌晨两点就开始往上爬,一路从0.8涨到1.35,整整六个小时没人发现。那六个小时的训练不仅白跑,还霸占着卡——等于…

2026/9/19 0:00:30 阅读更多 →
OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南

OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南

OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南 【免费下载链接】opencloud 🌤️ OpenCloud is the open source platform for file management, sharing and collaboration. Simple and sovereign. 项目地址: htt…

2026/9/19 0:00:30 阅读更多 →

周新闻

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验 【免费下载链接】ai The AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and ag…

2026/9/19 3:59:36 阅读更多 →
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化 【免费下载链接】refine A React Framework for building internal tools, admin panels, dashboards & B2B apps with unmatched flexibility. 项目地址: https://gitcode.com/GitH…

2026/9/19 3:53:08 阅读更多 →
Flutter应用改名全指南:从Android到iOS的配置与工具实践

Flutter应用改名全指南:从Android到iOS的配置与工具实践

刚接一个外包项目时,甲方要求把工程里临时用的应用名改成正式产品名。我本来觉得“改名”这种小事,打开配置文件改一行不就完了?结果真动手才发现,Flutter项目里“应用名称”根本不是一处配置,而是一整套散落在 Androi…

2026/9/19 4:02:43 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/16 22:31:27 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/19 17:50:38 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/16 22:32:59 阅读更多 →