first-contributions 项目:Git 与开源初贡献完整实战指南(Fork 到 Pull Request 全流程)
first-contributions 项目Git 与开源初贡献完整实战指南Fork 到 Pull Request 全流程【免费下载链接】first-contributions✨ Help beginners to contribute to open source projects项目地址: https://gitcode.com/gh_mirrors/fi/first-contributionsfirst-contributions 是一个以教学为唯一目标的开源教学仓库它用一次真实可操作的首次贡献任务让零基础学习者完整走一遍 Git 与 GitHub 的协作流程在真实环境中安全地完成人生第一次开源贡献。本文基于官方法语版指南docs/translations/README.fr.md展开逐条拆解 fork、clone、分支、提交、推送、Pull Request 与同步上游的全部命令与底层原理。读完本文你将掌握 fork → clone → edit → pull request 这条开源贡献的标准工作流并能独立处理推送认证错误、保持 fork 与上游同步、清理已合并分支等真实场景。项目背景为什么用真实任务教开源贡献第一次做某件事总是令人紧张尤其在多人协作的社区里害怕犯错是新手最大的心理门槛。而开源世界本身就是关于协作与团队工作的。first-contributions 的解决思路很直接与其让新手阅读抽象的文章不如提供一个可以放心犯错的真实仓库——你的任务就是把名字加进 Contributors.md 这份名单走完一次真实的 pull request 流程让项目维护者真的合并你的改动。正如项目描述所强调的心态越从容学得越好plus vous êtes serein, mieux vous apprenez。这个仓库本身就是一个极佳的教学样本Contributors.md 中已经积累了近六千条来自世界各地学习者的贡献记录每一条都是一次成功跑通的完整流程docs/translations/Translations.md 则收录了上百种语言的翻译版本其中法语版就是本文所依据的 README.fr.md另有法语进阶资料additional-material.fr.md可供深入学习。前置准备确保 Git 已安装在执行任何操作前先确认本机已经安装 Git。如果还没有安装需要先完成安装。针对不同平台的官方安装指引仓库内也提供了配套文档例如 Ubuntu 用户可参考 installing-git-ubuntu.mdArch 用户可参考 installing-git-arch.md。安装完成后可以通过git --version验证是否就绪。第一步Fork复刻这个仓库在 GitHub 上打开 first-contributions 仓库页面点击页面右上角的Fork按钮。这一步会在你自己的 GitHub 账号下创建一个该仓库的完整副本。fork 的作用在你的 GitHub 账号与原作者仓库之间建立第一层拷贝关系。为什么必须 fork因为普通用户没有对他人仓库的写权限fork 之后的副本属于你你可以在其上自由创建分支、推送提交并通过 pull request 把改动请求合并回原仓库。这就是开源协作权限模型的基础只有从你的 fork 出发你才能发起 pull request。第二步Clone克隆到本地进入你自己的 GitHub 账号打开刚才 fork 出来的仓库点击Code按钮切换到SSH标签页点击复制 URL 的剪贴板图标。打开终端Windows 用户使用命令提示符或 PowerShellmacOS/Linux 用户使用终端执行git clone 你刚刚复制的URL这里的 URL 是你 fork 出来的仓库地址例如git clone https://github.com/votre-nom-d-utilisateur/first-contributions.git其中votre-nom-d-utilisateur法语版示例即你的用户名替换为你的 GitHub 用户名。这条命令把 GitHub 上的 first-contributions 仓库内容完整复制到你的本地计算机。提示文档建议使用 SSH 地址gitgithub.com:用户名/first-contributions.git这可以避免后续推送时反复输入用户名密码。SSH 方式需要你提前在 GitHub 账号中配置好 SSH 公钥。第三步创建分支进入克隆下来的项目目录如果还不在其中cd first-contributions使用git switch命令创建并切换到一个新分支git switch -c add-votre-nom例如git switch -c add-koffi-sani分支名并不强制包含add前缀但建议保留它——因为这个分支的用途就是把你的名字添加到名单中语义化的分支名能让维护者一眼看懂意图。兼容性说明重要git switch是 Git 2.23 之后引入的新命令。如果执行时出现如下错误Git: switch is not a git command. See git --help说明你的 Git 版本较旧请改用等价的旧式命令git checkout -b nom-de-ta-nouvelle-branchegit switch -c与git checkout -b的效果等价创建新分支并立即切换过去。第四步修改文件并提交add commit用文本编辑器打开 Contributors.md把你的名字添加进去。注意不要加在文件开头或末尾而是加在文件中间的任意位置——这模拟了多人协作时把自己的改动插入到已有内容之间的真实场景也是后续可能出现合并冲突的伏笔。保存文件后在项目目录执行git status你会看到工作区出现了变更记录。git status是协作中最常用的体检命令它告诉你当前分支、暂存区状态与未跟踪文件。接着把变更加入暂存区git add Contributors.md然后提交到当前分支git commit -m Add votre-nom to Contributors list将votre-nom替换为你的名字。提交信息遵循了开源社区常见的规范格式以动词开头、描述改动目的。此处的工作流逻辑值得记住git add把文件放入暂存区staging areagit commit才真正把暂存内容固化为一次历史记录。二者分离的设计让你可以精确控制一次提交包含哪些改动。第五步推送到 GitHubpush把本地分支推送到远端你的 forkgit push -u origin nom-de-votre-branche将nom-de-votre-branche替换为你之前创建的分支名。-u参数--set-upstream会把本地分支与远端分支建立跟踪关系之后在此分支上就可以直接使用git push而无需再带参数。推送失败的常见错误与处理认证错误如果使用 HTTPS 地址推送可能看到如下报错remote: Support for password authentication was removed on August 13, 2021. remote: Please use a personal access token instead. fatal: Authentication failed for https://github.com/your-username/first-contributions.git/原因GitHub 已于 2021 年 8 月起移除了对 HTTPS 密码认证的支持必须改用 personal access token个人访问令牌或 SSH 密钥认证。排查步骤先执行git remote -v检查当前远端地址origin https://github.com/ton-nom-utilisateur/ton_repo.git (fetch) origin https://github.com/ton-nom-utilisateur/ton_repo.git (push)如果远端是 HTTPS 地址可以通过以下命令切换为 SSH 地址git remote set-url origin gitgithub.com:ton-nom-utilisateur/ton_repo.git否则你会一直被提示输入用户名和密码并持续遭遇认证失败。切换为 SSH 地址后配合已配置的 SSH 密钥即可免密推送。第六步提交 Pull Request 接受评审推送成功后回到 GitHub 上你的 fork 仓库页面会看到一个醒目的Compare pull request按钮点击它。随后进入 Pull Request 创建页面填写说明后点击提交按钮提交 pull request。维护者会审查你的改动并在合并后向你发送确认邮件。合并动作发生在原仓库的主分支上你的 fork 与本地仓库都不会因此自动发生变化。至此你已经完成了标准的 fork → clone → edit → pull request 工作流——这是今后参与几乎所有开源项目都会反复遇到的基础流程。第七步保持 fork 与上游仓库同步Pull Request 合并后你 fork 出的仓库主分支main并不会自动更新因为它与原仓库是两个独立拷贝。要让 fork 持续跟随原仓库演进需要配置并同步upstream。首先切回本地 main 分支可先用git status第一行确认当前所在分支git checkout main然后把原作者的仓库地址注册为名为upstream的远端git remote add upstream https://github.com/Roshanjossey/first-contributions这条命令告诉 Git在指定 URL 还存在该项目的另一个版本我们把它叫做upstream。之后抓取上游的最新改动git fetch upstream这一步只把上游的新提交下载到本地不修改你当前的工作分支。接下来把上游 main 分支的改动变基合并到你的本地 maingit rebase upstream/mainrebase会把你的本地 main 上尚未推送的提交搬到上游最新提交之上得到一条线性、干净的提交历史。最后推送到你的 forkgit push origin main注意这一次推送的目标是名为origin的远端也就是你的 fork。执行完毕后本地仓库与 GitHub fork 就都与上游保持同步了。快捷方式如果你只想一次性完成抓取并合并上游 main 到当前分支可以直接使用git pull upstream maingit pull本质上是git fetchgit merge或配置的合并策略的组合。每当 GitHub 上提示你的 fork 落后上游 N 个提交时就应该执行上述同步流程。清理已合并的分支现在你的add-votre-nom分支已经完成了历史使命上游已合并、main 已同步可以安全删除。先删除本地分支git branch -d add-votre-nom再删除远端 fork 上的对应分支git push origin --delete add-votre-nom分支名往往承载着非常具体、短期的目标把名字加进名单任务完成后删除分支是开源协作中的良好习惯能让仓库保持整洁。正如项目文档所说这不是必须的但分支名本身暗示了它的生命周期应该很短。进阶学习其他工具与更深层的 Git 技巧使用 GUI 工具完成同样流程如果你对命令行尚不熟悉仓库为多种图形化工具提供了分步教程流程与本文完全一致只是操作入口不同GitHub Desktop 教程Visual Studio 2017 教程GitKraken 教程Visual Studio Code 教程Atlassian Sourcetree 教程IntelliJ IDEA 教程进一步学习Git 进阶工作流完成基础流程后如果想继续深入 Git 能力建议阅读 docs/additional-material/git_workflow_scenarios/additional-material.md法语版见 additional-material.fr.md它围绕本次实践中可能遇到的高频场景提供了专项指南amending-a-commit.md修改最近一次提交的消息或补充遗漏内容git commit --amend在推送到远端前可反复使用configuring-git.md配置用户信息等 Git 全局选项keeping-your-fork-synced-with-this-repository.md本指南第七步的完整版内含 Triangle Workflows三角形工作流示意图——上游仓库、你的 fork、你的本地仓库三者间的协作模型resolving-merge-conflicts.md解决多人同时修改同一文件时产生的合并冲突squashing-commits.md用交互式 rebase 把多个提交合并为一个——当评审者要求把所有提交压成一个时使用reverting-a-commit.md撤销已经推送到远端的提交undoing-a-commit.md重置/撤销本地尚未推送的提交moving-a-commit-to-a-different-branch.md把提交移动到另一个分支removing-a-file.md、removing-branch-from-your-repository.md删除文件与删除分支的规范操作creating-a-gitignore-file.md用.gitignore控制哪些文件不进入版本控制storing-credentials.md凭据存储注意按所在机构的安防规范执行check-commit-log.md用git log查看提交历史例如git log -n 5限制显示条数、git log --all fichier查看某文件全部历史Useful-links-for-further-learning.md汇总了大量对新手与进阶者都有用的学习资源索引。总结一次完整的首次贡献本质上只围绕四个仓库实体展开上游原仓库、你的 fork、你的本地仓库、以及临时创建的贡献分支。本文覆盖的命令可以用一张速查表收尾阶段命令作用复刻点击 GitHub 页面Fork按钮在账号下创建原仓库副本克隆git clone fork的URL把 fork 下载到本地建分支git switch -c 分支名旧版用git checkout -b创建并切换贡献分支暂存git add Contributors.md把改动放入暂存区提交git commit -m Add 名字 to Contributors list固化一次本地提交推送git push -u origin 分支名推送到 fork 并建立跟踪评审GitHub 页面点击Compare pull request发起合并请求同步git remote add upstream 原仓库URL→git fetch upstream→git rebase upstream/main→git push origin main让 fork 跟随上游演进清理git branch -d 分支名、git push origin --delete 分支名删除已合并的临时分支把这条工作流跑通一次你就掌握了开源协作中最核心的通行证。之后参与其他项目时流程完全相同只是贡献内容从加名字变成了真实的功能代码——届时不妨回顾 Contributors.md 里那近六千条记录它们中的每一条都曾是一个新手迈出的第一步。【免费下载链接】first-contributions✨ Help beginners to contribute to open source projects项目地址: https://gitcode.com/gh_mirrors/fi/first-contributions创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

AI Agent安全攻防实战:从Prompt防护失效到进化式安全架构落地

AI Agent安全攻防实战:从Prompt防护失效到进化式安全架构落地

摘要:当下绝大多数企业和开发者的AI Agent安全方案,还停留在静态Prompt约束、输出结果关键词过滤的初级阶段。这套逻辑适配单次问答大模型,完全不匹配具备自主规划、工具调用、记忆读写、多轮持续执行能力的智能体。真实攻防场景中&#xff0…

2026/9/19 6:48:02 阅读更多 →
AI技能与多通道处理(MCP)核心技术解析

AI技能与多通道处理(MCP)核心技术解析

1. 项目概述:AI领域两大核心概念解析在人工智能技术快速发展的当下,行业术语层出不穷,其中"skill"和"MCP"这两个概念频繁出现在各类技术文档和产品说明中。作为从业多年的AI产品经理,我经常需要向非技术背景的…

2026/9/19 6:48:02 阅读更多 →
基于LLM与记忆系统的行业资讯Agent:从RSS聚合到每日简报的自动化实践

基于LLM与记忆系统的行业资讯Agent:从RSS聚合到每日简报的自动化实践

做这个Agent之前,我先交代一个背景:这不是我第一次碰"自动整理行业资讯"这类需求。在此之前,我先后用纯RSS订阅、规则脚本两代方案扛了将近一年,每次都因为维护成本过高而放弃。直到我把LLM、工具调用、记忆系统组合到一…

2026/9/19 6:48:02 阅读更多 →

最新新闻

HTML与CSS基础复习:从文档结构到盒模型居中与动画

HTML与CSS基础复习:从文档结构到盒模型居中与动画

做前端的这些年&#xff0c;我发现自己陷入过一个循环&#xff1a;新框架出来就追&#xff0c;组件库换了一茬又一茬&#xff0c;可真到某个晚上要写一个不带任何框架的纯页面时&#xff0c;反而被 HTML 和 CSS 的基础细节卡住了。尤其是<!doctype html>、<html lang&…

2026/9/19 7:39:26 阅读更多 →
区域综合能源系统双层优化调度与Matlab实现

区域综合能源系统双层优化调度与Matlab实现

1. 项目概述在能源系统优化领域&#xff0c;区域综合能源系统&#xff08;RIES&#xff09;的双层优化调度是一个极具挑战性的课题。作为一名长期从事能源系统建模的研究者&#xff0c;我最近成功复现了张海静等学者提出的"计及需求响应的区域综合能源系统双层优化调度策略…

2026/9/19 7:39:26 阅读更多 →
Quail 4升级:Flutter构建链现代化改造与迁移实践指南

Quail 4升级:Flutter构建链现代化改造与迁移实践指南

1. 升级Quail 4当天&#xff0c;构建日志把我吓了一跳安全起见&#xff0c;我升级大版本向来比同行慢半拍。这次 Android Studio Quail 4 正式发布后&#xff0c;我照例先盯着社区观察了将近一周&#xff0c;确认没有大面积翻车&#xff0c;才把主力开发机从上一个版本切过来。…

2026/9/19 7:39:26 阅读更多 →
LDA主题模型调参实战:alpha、eta、passes参数调优指南

LDA主题模型调参实战:alpha、eta、passes参数调优指南

1. 为什么LDA调参值得单独拿出来讲做过文本挖掘的人都有一个共识&#xff1a;LDA&#xff08;Latent Dirichlet Allocation&#xff09;主题模型的上手门槛极低&#xff0c;但调参门槛极高。gensim 里几行代码就能跑出一个模型&#xff0c;可当你拿着输出结果去汇报时&#xff…

2026/9/19 7:39:26 阅读更多 →
使用 aws_identitystore_groups 数据源批量检索 AWS IAM Identity Center 群组列表

使用 aws_identitystore_groups 数据源批量检索 AWS IAM Identity Center 群组列表

使用 aws_identitystore_groups 数据源批量检索 AWS IAM Identity Center 群组列表 【免费下载链接】terraform-provider-aws The AWS Provider enables Terraform to manage AWS resources. 项目地址: https://gitcode.com/GitHub_Trending/te/terraform-provider-aws …

2026/9/19 7:39:26 阅读更多 →
不会代码怎么搞网站?专业建设网站多少钱图解步骤全解析

不会代码怎么搞网站?专业建设网站多少钱图解步骤全解析

不会代码怎么搞网站?专业建设网站多少钱图解步骤全解析 手里有项目想落地,但看着满屏的代码头大,心里直打鼓: 自己不会代码想做网站 ,到底要花多少钱才能搞定一个像样的官网?这行水太深,报价从几千到几十万都有,坑更多。别慌,今天咱不整虚的,直接上干货。 这篇内容就是为你准备的 图解步骤…

2026/9/19 7:38:55 阅读更多 →

日新闻

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

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

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

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

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

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

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

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

OpenCloud 中的 Go 类型安全转换库 spf13/cast&#xff1a;从零值回退到泛型 API 的完整实战指南 【免费下载链接】opencloud &#x1f324;️ 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 依赖更新指南&#xff1a;掌握 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 组件实战&#xff1a;基于 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的配置与工具实践

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

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

月新闻

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

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

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

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

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

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

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

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

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

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