多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

first-contributions 仓库实战:从 Fork 到 Pull Request 的首次开源贡献完整指南

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 仓库的古吉拉特语版入门文档 为骨架、以仓库主版 README.md 与 Contributors.md 等资源为佐证完整还原初学者向开源项目提交第一次贡献的标准链路fork - clone - 创建分支 - 修改文件 - commit - push - pull request。读完本文你将亲手走通这条日后作为贡献者会反复遇到的协作流程并理解每一步 Git 命令背后的作用与常见坑点。项目是什么为第一次贡献而生的练习场第一次做某件事总是有点难尤其是当你身处一个团队、害怕犯错的时候而为了同一个目标一起协作正是开源的本来面貌。first-contributions 项目的定位是帮助初学者向开源项目做出第一次贡献项目描述Help beginners to contribute to open source projects它把一次真实的贡献流程拆解为可照做的具体步骤阅读教程永远不如亲手做一遍因此本项目用真实的 GitHub 协作流程代替抽象讲解仓库根目录的 Contributors.md 是所有学习者修改的目标文件里面已经积累了数千条来自全球贡献者的姓名记录是提交内容与练习目标合二为一的设计项目同时维护了数十种语言的 README 翻译见 docs/translations/Translations.md、命令行工具教程docs/cli-tool-tutorials和图形化工具教程docs/gui-tool-tutorials降低语言与工具门槛。整个练习只需完成一个核心动作把你的名字写进 Contributors.md并通过一次 Pull Request 合入主分支。下面按步骤展开。第 0 步前置准备——确认 Git 已安装所有后续操作都依赖 Git 命令行。如果你尚未安装 Git可以参考仓库维护的安装指南Ubuntu 安装 Git、Arch 安装 Git安装完成后用下面的命令确认版本git --version版本注意本文的古吉拉特语版文档使用git checkout -b创建分支而英文主版 README.md 使用较新的git switch -c。git switch是 Git 2.23 引入的命令如果你执行git switch时遇到switch is not a git command的报错说明 Git 版本较旧改用git checkout -b即可。两种写法在本文中都会给出。第 1 步Fork 本仓库在 GitHub 账号下复制一份打开仓库页面点击页面顶部的Fork按钮。这个操作会在你自己的 GitHub 账号下生成一份本仓库的副本。理解 Fork 的关键在于它发生在GitHub 服务器端复制的是仓库 它的版本历史而不是你本地的一份文件拷贝。这份副本归你所有你可以随意修改、推送而不会影响原仓库上游 upstream。这正是后续改完再通过 Pull Request 回传的前提。第 2 步将 Fork 克隆到本地git cloneFork 得到的仓库还只存在于云端需要把它下载到你的电脑上登录你的 GitHub 账号进入刚 Fork 出来的仓库点击Code按钮再点击copy to clipboard复制到剪贴板图标把仓库 URL 复制下来打开终端执行git clone 你刚刚复制的URL其中你刚刚复制的 URL不含引号是你 fork 出来的仓库地址即你账号下的 first-contributions 副本而不是原仓库。示例HTTPS 形式对应古吉拉特语版文档中的写法git clone https://github.com/你的GitHub用户名/first-contributions.git英文主版 README.md 给出的示例则是 SSH 形式git clone gitgithub.com:this-is-you/first-contributions.git两种形式等价区别只在于认证方式HTTPS 需要输入用户名与令牌TokenSSH 依赖你预先配置的 SSH 密钥。克隆完成后你的本地目录中会出现一个first-contributions文件夹其中包含仓库全部文件与历史——也就是fork云端副本→ clone本地副本这条链路的落点。第 3 步创建功能分支git checkout -b先进入克隆下来的仓库目录如果尚未进入cd first-contributions然后创建一个新的分支。git checkout -b中的-b选项表示创建并切换到一个新分支一步完成两件事git checkout -b 你的分支名示例沿用文档给出的命名风格git checkout -b add-alonzo-church关于分支命名的说明分支名里不强制加add前缀但加上它更符合直觉——分支的用途就是将要添加add某个名字让审阅者一眼看出这个分支在做什么。如果你用的是新版 Git等价写法是git switch -c 你的分支名为什么要专门开一个分支而不是直接在 main/master 上改因为开源协作中每个人都在自己的分支上做隔离的修改互不干扰最后由维护者把合格的分支合入主分支。这一理念的详细展开见仓库文档 为什么使用分支。第 4 步修改文件并提交git add git commit4.1 编辑 Contributors.md用文本编辑器打开仓库根目录的 Contributors.md把你的名字加进去。这里有一个刻意设计的细节不要加在文件开头或结尾而是放在中间任意位置。这是为了让每个贡献者都真实地读一遍、找位置、动手改而不是无脑追加一行。在真实项目中这个文件由成千上万贡献者共同维护文件中间位置正是别人留下的贡献记录把自己的名字穿插其中是最贴近真实协作出场的方式。保存文件。4.2 用 git status 查看改动回到终端进入项目目录并执行git status你会看到Contributors.md出现在已修改modified列表中。git status是 Git 中最常用的体检命令随时可以查看工作区与暂存区的状态。4.3 用 git add 暂存改动git add Contributors.mdgit add把文件改动加入暂存区staging area。理解 Git 的三层结构对后续所有操作都很重要区域作用对应命令工作区Working Directory你实际编辑的文件修改文件暂存区Staging Area准备提交的改动快照git add仓库/提交历史Repository已固化的提交记录git commit只git add你真正想提交的文件是避免把无关改动一起提交的基本习惯。4.4 用 git commit 固化提交git commit -m Add 你的名字 to Contributors list把你的名字替换成你自己的名字。-m后面的引号内是提交信息它应该简短地说明这次提交做了什么在开源项目中清晰、有信息量的提交信息是协作的基本礼仪关于如何把多次提交整理为一条信息可参考进阶文档 squashing commits。第 5 步推送分支到 GitHubgit push本地提交完成后把分支推到你在 GitHub 上的 forkgit push origin 你的分支名把你的分支名替换为第 3 步创建的分支名。英文主版 README.md 推荐加上-u参数首次推送时建立本地分支与远程分支的追踪关系之后可以直接git pushgit push -u origin 你的分支名推送报错排查认证问题如果你使用 HTTPS 地址推送时遇到认证失败README.md 的故障排查章节给出了两个高概率原因与对策GitHub 已于 2021 年 8 月 13 日起移除了密码认证报错信息形如Support for password authentication was removed... Please use a personal access token instead。解决方式是改用个人访问令牌Personal Access Token或 SSH 密钥认证远程地址仍是 HTTPS 形式时会被持续要求输入用户名密码。先用以下命令确认远程地址git remote -v如果输出形如origin https://github.com/your-username/your_repo.git可将其改为 SSH 形式git remote set-url origin gitgithub.com:your-username/your_repo.git关于凭据的更多安全细节见进阶文档 Storing Credentials。第 6 步提交 Pull Request 供审阅回到你的 GitHub 账号打开刚推送过分支的 fork 仓库页面会出现一个Compare pull request按钮点击它确认比对方向base 仓库原仓库的主分支←你的 fork 分支这一步是 PR 正确性的关键填写 PR 标题与说明说明这次改动做了什么点击提交按钮完成 Pull Request。提交后维护者会审阅你的改动并将其合并进项目的主分支合并完成后你会收到一封通知邮件。至此你的名字就会以真实提交记录的形式出现在这个仓库的 Contributors.md 中。回顾你刚刚走通的标准协作工作流恭喜你刚刚完整执行了开源贡献者最常遇到的fork - clone - edit - pull request标准工作流。把整条链路的命令汇总如下方便日后对照阶段命令 / 操作作用对象Fork点击 Fork 按钮云端GitHub 账号下的副本Clonegit clone 你的fork地址云端 → 本地建分支git checkout -b 分支名旧版或git switch -c 分支名新版本地改文件编辑Contributors.md名字放中间本地工作区暂存git add Contributors.md本地暂存区提交git commit -m Add 名字 to Contributors list本地仓库推送git push -u origin 分支名本地 → 云端 fork合入点击 Compare pull request 并提交云端原仓库从这里出发进阶学习与配套资源完成第一次贡献后你可以从以下仓库内置资源继续深入进一步练习项目还配套了一个代码贡献练习项目code-contributions用于反复训练同一条流程官方 Web 应用中整理了带简单 issue 的项目列表方便你直接投身真实项目Git 进阶专题仓库在 docs/additional-material/git_workflow_scenarios/additional-material.md 维护了一批完成基础教程后再看的进阶文档覆盖修改最近一次提交Amending a commit、配置 GitConfiguring git、让 fork 与上游保持同步Keeping your fork synced with this repository、解决合并冲突Resolving Merge Conflicts、撤销提交Undoing a commit、删除分支Removing a branch from your repository等按需取用不使用命令行的方案仓库提供了多款图形工具的逐步教程——GitHub Desktop、Visual Studio 2017、GitKraken、Visual Studio Code、Atlassian Sourcetree、IntelliJ IDEA命令行工具的更多教程见 docs/cli-tool-tutorials含 GitHub CLI 教程 github-cli-tutorial.md 等理论背景如果你还想了解开源贡献到底是怎么一回事可阅读 docs/how-to-contribute-to-open-source-projects.md多语言版本本文对应的古吉拉特语原文在 docs/translations/README.guj.md全部语言索引见 docs/translations/Translations.md。把第一次贡献留给读教程是很多人的遗憾而这个仓库的设计意图就是让你在十分钟内亲手完成一次真实的贡献。Fork 一个、Clone 下来、加上名字、提交 PR——下一次你再面对任何开源项目时这条链路就已经是肌肉记忆了。【免费下载链接】first-contributions✨ Help beginners to contribute to open source projects项目地址: https://gitcode.com/gh_mirrors/fi/first-contributions创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表