first-contributions 开源贡献实战:从 Fork 到 Pull Request 的完整入门流程
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仓库的越南语官方教程docs/translations/README.vn.md为主线系统讲解新手向开源项目提交第一份贡献的完整链路Fork 复刻 → Clone 克隆 → 创建分支 → 修改文件 → Commit 提交 → Push 推送 → Pull Request 合入请求。读完本文你将掌握这套在几乎所有开源项目中通用的协作流程并能独立完成一次真实、可被合并的开源贡献。项目概览这个仓库为什么存在first-contributions是一个专门面向开源新手的教学仓库MIT 协议其核心思路是与其阅读教程不如真正动手实践仓库本身就是一个可以安全演练的环境任何新手都可以按照官方步骤提交自己的名字并触发一次真实的 Pull Request在真实协作环境中走完全部流程而不用担心破坏项目。仓库结构本身就体现了这套教学设计根目录的 README.md 是英文原版完整教程docs/translations 目录下提供了近数十种语言的翻译版本包括中文简体README.zh-cn.md、中文繁体README.zh-tw.md以及本文所依据的越南语版本README.vn.mdContributors.md 是所有贡献者添加自己名字的目标文件目前已积累数千条贡献记录文件超过 5900 行是这套流程被反复验证的活证据docs/additional-material/git_workflow_scenarios 存放 Git 进阶场景文档docs/gui-tool-tutorials 存放不使用命令行时的图形化工具教程。说明本文所有命令均以当前仓库教程为事实依据。若本机尚未安装 Git请先按官方 Git 安装指引完成安装Linux 可参考仓库内 installing-git-ubuntu.md 与 installing-git-arch.md安装完成后在终端执行git --version验证。第一步Fork复刻上游仓库Fork 的含义是复刻点击仓库页面顶部的Fork按钮在你的 GitHub 账号下生成一份该仓库的完整副本。为什么要先 Fork 而不是直接修改原仓库因为普通贡献者没有上游仓库的写权限。Fork 之后你拥有自己副本的完全控制权可以在其中自由创建分支、提交修改最后通过 Pull Request 把改动申请回原仓库。这一机制也是 docs/how-to-contribute-to-open-source-projects.md 中Fork and Clone → Create a Branch → Write Clean Code → Test → Open PR贡献流程的第一步。第二步Clone克隆到本地进入你的 GitHub 账号打开刚才 Fork 出来的仓库点击Code按钮再点击copy to clipboard复制到剪贴板图标复制仓库 URL。打开终端执行git clone url bạn vừa sao chép其中url bạn vừa sao chép去掉引号就是上一步复制到的你名下副本的地址。例如git clone https://github.com/你的GitHub用户名/first-contributions.git把你的GitHub用户名替换成真实用户名后这条命令会把 first-contributions 仓库的内容完整下载到你的电脑上生成一个名为first-contributions的本地目录。克隆完成后本地目录与你 GitHub 上的 fork 副本即建立了origin远程关联后续git push默认推送的目标就是它。第三步创建独立分支进入仓库目录如果当前不在此目录中cd first-contributions然后使用git switch命令创建并切换到一个新分支git switch -c tên-nhánh-mới-của-bạn教程给出的示例分支名是git switch -c thêm-Tran-Ly-Vu其中thêm是越南语添加之意即用add-你的名字这样的前缀说明分支用途英文原版 README 中对应示例为git switch -c add-alonzo-church。分支名并不强制包含add但用动词前缀表明为添加名单而创建的意图是社区常见约定。补充如果你的 Git 版本较旧执行git switch时报 switchis not a git command 错误说明switch子命令在旧版本中尚不存在。此时改用经典写法即可git checkout -b 你的新分支名checkout -b与switch -c语义等价-b/-c均表示创建新分支并立即切换过去。第四步修改 Contributors.md 并提交用文本编辑器打开仓库根目录的Contributors.md文件把你的名字添加进去。这里有一个重要的规范细节不要加在文件开头或结尾要加在中间任意位置。原因从文件内容即可看出——贡献者名单是不断追加的开放列表若所有人都追加到开头或结尾将不可避免地产生大量冲突把名字插入中间可以分散写入点降低与其他人同时提交时的合并冲突概率。保存文件后在项目目录执行git status检查工作区状态你会看到Contributors.md已被标记为已修改modified。接下来用git add把修改加入暂存区git add Contributors.md然后提交git commit -m Them ten-ban vào danh sách Cộng tác viên将ten-ban替换为你的名字。这条提交信息是越南语原文意为将 你的名字 添加到贡献者列表如果你更习惯英文写成git commit -m Add your-name to Contributors list同样符合规范。提交信息应简明描述改动内容这是 Pull Request 评审者判断改动意图的第一依据。第五步Push 到你的 GitHub 分支将本地提交推送到 GitHub 上你自己的 forkgit push origin tên-nhánh-của-bạn把tên-nhánh-của-bạn替换为第三步创建的分支名。这里origin指代你 fork 出来的远程仓库。英文原版 README 推荐加上-u参数git push -u origin 你的分支名-u--set-upstream会把当前本地分支与远程分支建立跟踪关系此后在该分支上直接执行git push即可无需再重复指定远程与分支名。Push 报错排查身份认证失败如果你在 push 时看到类似下面的报错说明遇到了身份认证问题remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information. fatal: Authentication failed for https://github.com/你的用户名/first-contributions.git/自 2021 年 8 月起GitHub 已移除 HTTPS 方式下的密码口令认证必须改用**个人访问令牌Personal Access Token**或SSH 密钥完成认证。仓库教程给出的解决路径是按照 GitHub 官方的 SSH 密钥教程为你的账号生成并配置 SSH 密钥之后改用 SSH 地址访问仓库。英文原版 README 还给出了两个补充排查步骤执行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 上的 fork 仓库页面你会看到页面顶部出现一个Compare pull request比较并创建拉取请求按钮点击它确认比较基准base是上游原仓库的主分支master/maincompare是你刚推送的功能分支确认 diff 中只包含你对Contributors.md的修改点击创建 Pull Request填写标题与说明后提交。提交完成后维护者会审阅你的改动并将其合并进项目主分支。合并成功后你会收到 GitHub 的邮件通知——至此你的第一次开源贡献正式完成。后续行动庆祝、巩固与进阶完成这一整套fork → clone → edit → pull request流程意味着你已掌握开源协作中最高频的标准工作流。教程建议接下来通过官方 Web 应用分享你的贡献成果在 Web 应用的项目列表中挑选带简单 issue如good-first-issue、help-wanted标签的真实开源项目继续练习系统学习更完整的开源贡献方法论可阅读仓库内的 docs/how-to-contribute-to-open-source-projects.md 综合指南。进阶资料Git 工作流场景文档一览完成基础流程后docs/additional-material/git_workflow_scenarios/additional-material.md 汇总了一系列进阶 Git 技术文档覆盖真实协作中几乎必然会遇到的场景场景文档适用时机修改最近一次提交amending-a-commit.md需要调整已做的提交改提交信息或补充遗漏改动且尚未 push配置 Git 用户信息configuring-git.md需要精细控制 Git 配置项保持 fork 与上游同步keeping-your-fork-synced-with-this-repository.md你的 fork 缺少上游仓库的新改动时把提交移动到其他分支moving-a-commit-to-a-different-branch.md提交落在了错误的分支上删除文件removing-a-file.md提交前需要从本地仓库移除文件删除分支removing-branch-from-your-repository.mdPull Request 合并后清理分支解决合并冲突resolving-merge-conflicts.md多人并行修改同一文件时回滚已推送的提交reverting-a-commit.md需要撤销已经 push 到远程的提交压缩多个提交squashing-commits.md评审者要求把多个提交合并为一个信息完整的提交撤销本地提交undoing-a-commit.md本地仓库状态混乱需要重置创建 .gitignorecreating-a-gitignore-file.md只提交必要文件忽略临时与构建产物存储凭据storing-credentials.md为仓库安全地存储认证凭据注意遵循工作单位的安全策略学习资源索引Useful-links-for-further-learning.md新手与进阶者查找技巧类网站与博客Gitflow 工作流gitflow.md了解基于分支模型的团队协作规范其中 keeping-your-fork-synced-with-this-repository.md 尤其值得关注它解释了开源协作中典型的三角工作流——上游公共仓库upstream、你的 GitHub fork、你的本地仓库三者之间的同步关系。核心命令链为git remote add upstream 上游仓库地址 # 将上游仓库注册为名为 upstream 的远程 git fetch upstream # 拉取上游最新提交 git rebase upstream/main # 将上游主分支的更新变基到本地主分支 git push origin main # 把同步后的主分支推送到自己的 fork图形化工具教程不熟悉命令行的替代方案如果你不习惯命令行操作仓库在 docs/gui-tool-tutorials 中提供了多款图形化工具的逐步教程覆盖 Fork → Clone → Branch → Commit → Push → Pull Request 的同样流程工具教程GitHub Desktopgithub-desktop-tutorial.mdVisual Studio 2017github-windows-vs2017-tutorial.mdGitKrakengitkraken-tutorial.mdVisual Studio Codegithub-windows-vs-code-tutorial.mdAtlassian Sourcetreesourcetree-macos-tutorial.mdIntelliJ IDEAgithub-windows-intellij-tutorial.md此外docs/cli-tool-tutorials 还收录了git命令行与 GitHub CLIgh的专项教程以及 docs/translations/Translations.md 这一语言索引页方便不同语言背景的读者获取母语版教程。仓库内部视角教程背后的实践验证从仓库结构可以印证这套教程的真实性与可操作性Contributors.md已包含数千条来自世界各地贡献者的记录超过 5900 行每条记录形如- 名字。这意味着按教程提交名字 → 维护者合并的循环已被真实执行了数千次流程的每一步都经受了实际检验docs/translations中数十种语言的 README 翻译本身就是开源贡献的产物——任何读者都可以像修改Contributors.md那样通过翻译或修订文档为项目做贡献这是从练习贡献过渡到真实贡献的天然跳板进阶与 GUI 教程目录覆盖了从推送失败到合并冲突的各类真实故障场景说明教程体系在设计上就面向会出错的新手而非理想化的演示路径。总结first-contributions 提供了一条低门槛、零风险、可重复的贡献练习路径。按照本文梳理的六步流程——Fork、Clone、创建分支、修改并提交、Push、提交 Pull Request——你可以在几分钟内完成第一次真实开源贡献而仓库内的进阶文档、GUI 教程与多语言资源则为你从完成第一次走向持续参与开源提供了完整的后续学习地图。【免费下载链接】first-contributions✨ Help beginners to contribute to open source projects项目地址: https://gitcode.com/gh_mirrors/fi/first-contributions创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Gephi 网络图入门:从 Excel 到 CSV 数据导入完整指南

Gephi 网络图入门:从 Excel 到 CSV 数据导入完整指南

/* 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 9:58:27 阅读更多 →
CANN Runtime TDT 数据传输接口详解:Tensor 通道创建、发送与接收

CANN Runtime TDT 数据传输接口详解:Tensor 通道创建、发送与接收

CANN Runtime TDT 数据传输接口详解:Tensor 通道创建、发送与接收 【免费下载链接】runtime 本项目提供CANN运行时组件和维测功能组件。 项目地址: https://gitcode.com/cann/runtime 导读 本文围绕 CANN Runtime 中的 TDT(Tensor Data Transfer…

2026/9/20 14:49:53 阅读更多 →
ESP32 系列 USB 外设综述:USB-OTG、USB-Serial-JTAG 与 PHY 架构及实战指南

ESP32 系列 USB 外设综述:USB-OTG、USB-Serial-JTAG 与 PHY 架构及实战指南

ESP32 系列 USB 外设综述:USB-OTG、USB-Serial-JTAG 与 PHY 架构及实战指南 【免费下载链接】esp-iot-solution Espressif IoT Library. IoT Device Drivers, Documentations and Solutions. 项目地址: https://gitcode.com/GitHub_Trending/es/esp-iot-solution …

2026/9/20 15:29:37 阅读更多 →

最新新闻

OpenClaw自动化工具:从安装到实战的完整指南

OpenClaw自动化工具:从安装到实战的完整指南

1. 项目概述:当小龙虾遇上自动化OpenClaw(小龙虾)这个命名相当有意思——它既暗示了工具的"钳子式"精准抓取能力,又带着点程序员特有的幽默感。作为一款本地化部署的自动化工具,它能让你的电脑像训练有素的&…

2026/9/20 15:30:00 阅读更多 →
数据中台能力平台建设方案:从数据治理到场景落地的实战指南

数据中台能力平台建设方案:从数据治理到场景落地的实战指南

简介:面向企业数字化转型与数据中台建设规划,该52页PPT方案系统梳理了数据中台的核心认知、解决方案与实践汇报。内容涉及数据服务化、数据资产化、数据标准化、模型萃取等体系化建设层次,重点解决数据孤岛与口径不一致等问题,并给…

2026/9/20 15:30:00 阅读更多 →
AssetRipper 使用指南:3 步从 Unity 游戏文件中提取模型、纹理和音频

AssetRipper 使用指南:3 步从 Unity 游戏文件中提取模型、纹理和音频

AssetRipper 使用指南:3 步从 Unity 游戏文件中提取模型、纹理和音频 【免费下载链接】AssetRipper GUI application to analyze game files 项目地址: https://gitcode.com/GitHub_Trending/as/AssetRipper 你手里有一份 *.bundle 或 *.assets 文件&#xf…

2026/9/20 15:30:00 阅读更多 →
用publish命令一条命令发布策略:Microduck RL到HF Hub再到真机安装

用publish命令一条命令发布策略:Microduck RL到HF Hub再到真机安装

用publish命令一条命令发布策略:Microduck RL到HF Hub再到真机安装 【免费下载链接】microduck_rl RL training environments for Microduck (mjlab) 项目地址: https://gitcode.com/GitHub_Trending/mi/microduck_rl microduck_rl 是 Microduck 双足机器人&…

2026/9/20 15:30:00 阅读更多 →
Enzyme ShallowWrapper `.unmount()` 完全指南:模拟组件卸载生命周期与验证清理逻辑

Enzyme ShallowWrapper `.unmount()` 完全指南:模拟组件卸载生命周期与验证清理逻辑

Enzyme ShallowWrapper .unmount() 完全指南:模拟组件卸载生命周期与验证清理逻辑 【免费下载链接】enzyme JavaScript Testing utilities for React 项目地址: https://gitcode.com/gh_mirrors/en/enzyme 导读 .unmount() 是 Enzyme ShallowWrapper 提供的…

2026/9/20 15:30:00 阅读更多 →
抖音视频与用户主页批量下载完整指南:douyin-downloader 实战笔记

抖音视频与用户主页批量下载完整指南:douyin-downloader 实战笔记

抖音视频与用户主页批量下载完整指南:douyin-downloader 实战笔记 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fal…

2026/9/20 15:28:59 阅读更多 →

日新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/20 0:00:46 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/20 0:00:46 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/20 0:00:46 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/20 0:00:46 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/20 0:00:46 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/20 0:00:46 阅读更多 →

月新闻

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

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

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

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

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

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

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

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

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

2026/9/19 23:35:34 阅读更多 →