first-contributions 开源新手指南:从 Fork 到首个 Pull Request 的完整 Git 实战
first-contributions 开源新手指南从 Fork 到首个 Pull Request 的完整 Git 实战【免费下载链接】first-contributions✨ Help beginners to contribute to open source projects项目地址: https://gitcode.com/gh_mirrors/fi/first-contributions本文基于 first-contributions 仓库的 阿拉伯语版 README 教程与 英文原版 内容对应整理编写系统讲解开源新手完成首次贡献所需经历的fork → clone → 建分支 → 修改提交 → push → Pull Request → 同步上游全流程。读完本文你将能够独立在 GitHub 上完成一次真实的开源贡献掌握 fork 工作流中所有关键 Git 命令的用法、含义与常见坑位并了解如何在贡献合并后让本地仓库与远程主仓库保持同步。first-contributions 是一个专门为开源初学者设计的练习仓库项目本身不做任何业务功能只包含一份需要填上自己名字的 Contributors.md 名单文件目前已积累数千条贡献记录。它的核心价值在于——你可以在一个真实、活跃、有真人维护者审核 PR 的仓库里零风险地走完开源贡献的完整链路。教程刻意强调犯错误是被预期且被允许的维护者会帮你指出并修正错误这正是练习的意义所在。前置准备安装并初始化 Git教程假定你已具备 GitHub 账号。如果你的机器上还没有安装 Git需要先完成安装安装后可在终端执行git --version验证。在正式开始前建议先确认 Git 知道你是谁因为每一次git commit都会把提交与一个名字和邮箱绑定。首次执行git commit时如果没有配置身份Git 会给出类似提示并直接中止提交$ git commit *** Please tell me who you are. Run git config --global user.email youexample.com git config --global user.name Your Name to set your accounts default identity. Omit --global to set the identity only in this repository.按提示完成全局身份配置参考仓库内的 configuring-git.mdgit config --global user.email youexample.com git config --global user.name Your NameGit 配置存在三级作用域优先级为命令行参数 仓库级 全局全局配置--global作用于本机所有仓库省略--global则只对当前仓库生效例如用公司邮箱提交工作项目临时单次生效可用git -c user.name... -c user.email... commit ...。此外core.editor提交信息编辑器、color.ui输出着色等选项也通过同样的git config机制配置。第一步Fork 仓库把项目复制到你的账号下Fork 是 GitHub 提供的一种账号级复制点击本仓库页面右上角的Fork按钮就会在你自己的 GitHub 账号下生成一份独立的仓库副本。这个副本归你所有你可以随意修改、删除、推送而不影响原始仓库。Fork 之所以是开源协作的基石是因为它形成了开源社区典型的三角工作流Triangle Workflow上游公共仓库upstream→ 你的 forkorigin→ 你的本地仓库三者之间的流转方向见仓库内的 keeping-your-fork-synced-with-this-repository.md 说明。由于外部贡献者没有上游仓库的写权限只能通过改自己的 fork → 提 Pull Request → 维护者审核合并的方式把改动汇入上游。第二步Clone 仓库把 fork 拉到本地Fork 完成后进入你自己账号下的first-contributions仓库页面点击Code按钮复制仓库地址HTTPS 或 SSH 均可。然后打开终端执行克隆git clone url you just copied把url you just copied替换为刚才复制的地址。例如如果 GitHub 用户名为this-is-yougit clone https://github.com/this-is-you/first-contributions.git克隆完成后本地会出现一个first-contributions/目录内含与 GitHub 上完全一致的文件快照之后的所有修改都在这份本地副本上进行。提示clone 下来的仓库其默认远程仓库名会被 Git 命名为origin指向你自己的 fork。可用git remote -v查看当前配置的远程地址这个命令在后续排查推送问题时非常有用。第三步创建专属分支隔离你的改动进入项目目录并创建一个新分支cd first-contributions git checkout -b add-your-name将add-your-name换成有意义的、能标识你自己的分支名。教程给出的示例git checkout -b add-alonzo-churchgit checkout -b 分支名是创建分支并立即切换过去的合并写法较新版本的 Git 也支持等价命令git switch -c 分支名英文原版 README.md 即采用git switch写法。如果执行git switch报错提示 switchis not a git command说明 Git 版本过旧改用git checkout -b即可。分支是 Git 协作的核心机制它让你的改动与主分支本仓库当前默认分支为main完全隔离即使改坏了也不会影响他人还可以同时并行开展多项工作。第四步修改文件并提交用任意文本编辑器打开 Contributors.md在文件中间任意位置刻意不要加在开头或结尾这是为了降低多人在同一区域改动的冲突概率添加你的名字然后保存。回到终端执行git status会看到 Git 检测到Contributors.md发生了变化。接下来把改动加入暂存区并提交git add Contributors.mdgit commit -m Add your-name to Contributors list把your-name替换为你的真实名字。这两个命令各司其职git add把文件改动加入暂存区staging area即准备提交的内容清单git commit -m把暂存区内容固化为一次提交commit-m后是提交信息用于向协作者说明这次改动做了什么。开源项目中清晰、规范的提交信息是良好协作的基本素养。第五步推送分支到 GitHub使用git push把本地分支推送到你的 forkorigin 远程git push origin add-your-name把add-your-name替换为第三步创建的分支名。推送到 fork 后改动进入你账号下的远程仓库但此时原始仓库上游还看不到任何变化。推送常见问题认证失败。如果推送时报错remote: Support for password authentication was removed on August 13, 2021. fatal: Authentication failed for https://github.com/your-username/first-contributions.git/说明你仍在用密码方式认证而平台已不再支持。解决办法是改用 SSH 密钥或个人访问令牌PAT认证。若git remote -v显示的远程地址是 HTTPS 形式可以切换为 SSH 形式git remote set-url origin gitgithub.com:your-username/your_repo.git第六步提交 Pull Request把改动交给维护者审核推送成功后打开你账号下的 fork 仓库页面GitHub 会醒目地出现Compare pull request按钮点击它进入 PR 创建页面填写说明后提交 Pull Request。PR 是开源协作的正式申请单它向维护者表明我 fork 了你的项目、做了如下改动请审核并合并。维护者审核通过后会把你的改动合并进上游主分支并发送邮件通知你。这也是开源社区代码质量得以保障的关键环节——每一行进入主分支的代码都经过人工 review。第七步贡献合并后同步你的仓库PR 合并后你自己的 fork 和本地仓库并不会自动获得这些改动需要手动同步。完整流程如下。首先切回主分支并确认当前状态git checkout main然后把上游公共仓库注册为一个名为upstream的远程git remote add upstream https://github.com/Roshanjossey/first-contributions这条命令告诉 Git在指定的 URL 上还存在该项目的另一个版本我们叫它upstream。注意仓库官方文档 keeping-your-fork-synced-with-this-repository.md 中登记的上游地址为https://github.com/firstcontributions/first-contributions.git以你实际 fork 的上游仓库为准即可。接着拉取上游的最新改动git fetch upstreamgit fetch会把upstream远程的所有最新提交下载到本地但不会改动你当前的工作分支。随后把上游主分支的改动应用到你的主分支git rebase upstream/maingit rebase会把你的主分支重放到上游最新提交之上使本地主分支与上游保持一致。最后把同步后的主分支推送回你的 forkgit push origin main注意这里的推送目标是名为origin的远程你的 fork。如果想一步到位同时完成拉取与合并也可以直接用git pull upstream main同步并非一次性的只要 GitHub 提示你的 fork a few commits behind落后若干提交就应重复上述步骤。这套三角工作流上游 → fork → 本地再回流是所有 GitHub 开源项目协作的通用模式。进阶学习与配套资源完成上述流程你就已经跑通了开源贡献中最核心的fork → clone → edit → pull request标准工作流。first-contributions 仓库还整理了更深入的进阶资料供你继续打磨 Git 技能additional-material.mdGit 进阶技巧索引涵盖修改最近一次提交amending-a-commit、解决合并冲突resolving-merge-conflicts、合并提交squashing-commits、撤销本地提交undoing-a-commit、删除分支removing-branch-from-your-repository、.gitignore的创建与作用creating-a-gitignore-file等十余个专题configuring-git.mdGit 身份与常用配置的完整说明keeping-your-fork-synced-with-this-repository.mdfork 同步与三角工作流的原理图解。如果你不习惯命令行仓库还提供了多种 GUI 工具教程路径均以仓库根目录为起点可直接继续阅读GitHub Desktop 教程Visual Studio Code 教程Visual Studio 2017 教程GitKraken 教程Sourcetree (macOS) 教程IntelliJ IDEA 教程注本文关联的 阿拉伯语版教程 属于多语言翻译体系的一部分全部语言版本可通过 Translations.md 索引访问。【免费下载链接】first-contributions✨ Help beginners to contribute to open source projects项目地址: https://gitcode.com/gh_mirrors/fi/first-contributions创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

OpenDesign 设计系统溯源与 Token 契约:Expo 包 source/evidence 机制全解析

OpenDesign 设计系统溯源与 Token 契约:Expo 包 source/evidence 机制全解析

OpenDesign 设计系统溯源与 Token 契约:Expo 包 source/evidence 机制全解析 【免费下载链接】open-design 🎨 Best DeepSeek Harness Design Plugin. The open-source Claude Design alternative. 🖥️ Local-first desktop app. &#x1f5…

2026/9/19 22:03:54 阅读更多 →
2025年科目一题库高效刷题:五域拆解与本地结构化复习法

2025年科目一题库高效刷题:五域拆解与本地结构化复习法

简介:2025最新驾照C1证科目一必考题库附含答案,一套面向C1证考生、聚焦理论考试核心考点的便携复习资料。资源以docx文档形式收录科目一选择题与判断题,答案直接附于题后,便于考生进行自我检测与系统记忆,尤其适合备考…

2026/9/19 22:03:54 阅读更多 →
从源码编译Aseprite中文版:像素画软件汉化实战指南

从源码编译Aseprite中文版:像素画软件汉化实战指南

1. 为什么我要自己动手做像素画软件的汉化第一次接触像素画是在做独立游戏的时候,美术资源全靠自己画。当时试了一圈工具,最后锁定了 Aseprite——它的动画帧管理、洋葱皮、调色板索引这些功能,对做像素风游戏来说几乎是量身定做的。但问题也…

2026/9/19 22:03:54 阅读更多 →

最新新闻

App测试规范化:从经验驱动到可执行决策树

App测试规范化:从经验驱动到可执行决策树

简介:本资源是一份面向移动测试工程师、质量保障从业者及App开发初学者的《APP测试规范化》实操指南,聚焦互联网行业App质量保障核心场景,系统梳理测试全流程标准化方法。文档涵盖App测试定义与价值、主流黑盒/白盒/灰盒等测试方法、15个工作…

2026/9/19 22:44:15 阅读更多 →
用Python+Excel自动化生成IT部门月报PPT的实战指南

用Python+Excel自动化生成IT部门月报PPT的实战指南

简介:这是一份面向IT运维工程师及IT部门员工的个人月度工作报告PPT模板,帮助用户解决月报结构混乱、重点不突出的问题。资源包含1个pptx文件,整体约6.82MB,页面设计完整,可直接编辑使用。模板内设工作总结、技术挑战与…

2026/9/19 22:44:15 阅读更多 →
npm安装配置与排错全攻略:从环境变量到发布包

npm安装配置与排错全攻略:从环境变量到发布包

先说明个前提:npm 不是一个独立软件,它没法单独安装,老老实实装好 Node.js,npm 就跟着来了。这句话解决了 80% 新手的第一层困惑。但真去实操,你会发现网上大量教程都停在了"装完 node -v 有版本号"这一步&a…

2026/9/19 22:44:15 阅读更多 →
用编程思维破解PISA数学题:从建模到自动验证的工程实践

用编程思维破解PISA数学题:从建模到自动验证的工程实践

简介:PISA数学试题.doc是一份面向中学数学教师、教研员及初中学生的PISA官方风格数学素养训练材料。文档收录了地衣生长、苹果树与针叶树、骰子底面推断、身高数据变化、图形面积周长估算、直角三角形性质、木匠围栏设计、阳台铺砖、积木空心体积等十余类经典情境题…

2026/9/19 22:44:15 阅读更多 →
专升本高数知识图谱:从定义域到微分方程的结构化学习路径

专升本高数知识图谱:从定义域到微分方程的结构化学习路径

简介:本资源是一份专升本高等数学核心知识点系统归纳文档,面向备考专升本考试的专科学生及基础薄弱的自学者,旨在帮助其高效梳理高数主干内容、突破重难点并构建知识框架。文档为单文件Word格式(.doc),共16…

2026/9/19 22:44:15 阅读更多 →
用Windows Update Blocker永久禁用系统强制更新:原理与实操

用Windows Update Blocker永久禁用系统强制更新:原理与实操

我真的受够了。每次赶方案赶到一半,电脑突然弹出“正在配置Windows更新,请不要关闭计算机”,然后就是漫长的黑屏转圈;要么就是刚装好的显卡驱动,一夜之间被系统偷偷回滚成旧版本,游戏帧率直接腰斩。我相信每…

2026/9/19 22:43: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 阅读更多 →