FEATURED · 精选文章

first-contributions 项目:Git 与开源初贡献完整实战指南(Fork 到 Pull Request 全流程)

发布时间 / 2026/9/19 6:48:01
来源 / 创域科博编辑部
栏目 / 资讯中心
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),仅供参考
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻