开放原子开源社团 JMI-OPENATOM
JMI-OPENATOM / LAB 01

第一次开源贡献,
从这里开始。

跟着图解,把一份简单作品从自己的电脑,送到课程的 Gitee 仓库。

今天的目标:做出作品 → 保存版本 → 推送到自己的仓库 → 发起一个方向正确的 PR。

开始课前检查 ↓查看百人课堂安排
100 人不分小组,每人独立完成90 分钟主课时 · 附 60 分钟压缩表1 个 PR每人独立完成一次贡献
01 → PR
我的电脑编写作品 · Commit
↓
我的 Gitee 副本Fork · Push
↓
课程仓库Pull Request · 审核 · 合并
课程仓库gitee.com/Se1yo-aipacino/se1yo ↗目标分支:master版本:2026.10.20 · 教学策划版

01先准备好,再进入课堂

本课承接“认识 Gitee 与 Git”的入门课。安装、注册和登录请在课前完成;现场把时间留给作品和协作。90 分钟也不承诺 100 个 PR 都能当场合并。

学生:课前一天完成

  • 带可联网的电脑、充电器和鼠标;手机用于本人验证。
  • 登录 Gitee,能看到自己的个人空间。
  • 从 Git 官方入口安装 Git;安装后重新打开终端。
  • 执行下面的检查,拍下结果或向助教展示。
  • 确定自己的目录名,格式为“部门-班级-姓名”,例如 计算机学院-2024级1班-张三。

助教:课前完成一次完整演练

  • 用测试账号走完 Fork → Clone → Push → PR。
  • 确认主仓库允许 Fork、能接受 PR;目标分支为 master。
  • 确认本次允许 src/部门-班级-姓名/ 目录规则;在群内统一公布。
  • 准备离线模板、安装包官方入口和备用网络。
  • 检查投影字体、座位分区与 100 人并发联网;合并权限由维护者持有。
Windows PowerShell / Git Bash / macOS 终端 · 课前检查
git --version

看到版本号就通过。若提示“无法将 git 识别为命令”,先重开终端;仍失败请助教检查安装与 PATH。不要全班现场一起重装。登录、短信验证、滑块验证由本人完成。

本课使用新的目录规则。参考仓库原活动要求“班级-姓名-学号”;本课改用“部门-班级-姓名”,不再使用学号。若参加原活动,仍以原活动规则为准。
没有电脑、安装失败或登录卡住怎么办?

优先两人互助,由本人操作自己的账号。Git 安装或推送认证超过 3 分钟仍未解决时,助教记录问题,先转到网页备用路线。未登录者可跟随同桌观察、完成概念题并领取补做任务;不能把观察记作独立实操通过。

教师提示 / 开课前 5 分钟

助教逐人检查“能登录、能输出 Git 版本、目录名无重复”。分区汇总就绪人数;未就绪同学坐到靠助教的位置。不要让任何人把密码、验证码或令牌投到屏幕上。

02先看懂:文件到底去了哪里?

图 1 / 开源协作路线 · 教学示意

课程主仓库Se1yo-aipacino / se1yo
→
我的 Fork个人空间里的远程副本
→
我的电脑Clone 后可本地编辑

① Fork:主仓库 → 个人远程副本 ② Clone:个人远程副本 → 电脑

本地 Commit电脑上记录一次版本
→
Push 到自己的 Fork网络上出现自己的修改
→
PR 给课程仓库申请审核合并

③ Commit 不会自动上传 ④ Push 不会自动合并 ⑤ PR 是申请,维护者决定是否合并

Git 是工具

在电脑上记录文件变化与提交。关掉网络也能编写作品、生成 Commit。

Gitee 是平台

保存远程仓库,并提供 Fork、PR、审核等协作入口。

分支是一条工作线

本课在个人分支上改作品,再请求合并到课程仓库的 master。

03填写我的信息,命令就会对应到我

这里填的是 Gitee 个人空间地址中的用户名,不是昵称。例:地址为 gitee.com/example-user,填 example-user。

先填写用户名和“部门-班级-姓名”,再复制个性化命令。

个人目录:src/部门-班级-姓名/个人分支:learn/部门-班级-姓名

本页没有登录功能,不需要密码或访问令牌。用户名和目录名只用于本地生成命令;勾选进度保存在当前浏览器。

04Fork:先拥有自己的副本

第 1 步 · 8–18 分钟
  1. 打开 课程仓库,确认地址属于 Se1yo-aipacino/se1yo。
  2. 找到 Fork,选择自己的个人空间;按页面提示创建副本。
  3. 创建后检查地址和仓库标题:所有者必须是你自己。仓库名称若被自动修改,先请助教检查,本页命令默认仓库名为 se1yo。

图 2 / Fork 前后看“所有者” · 界面示意,按钮以当前页面为准

gitee.com/Se1yo-aipacino/se1yo
Se1yo-aipacino / se1yo① Fork
课程主仓库

↓ 选择“自己的个人空间”,完成派生

② 看这里:斜杠前的所有者变成了自己的用户名

✓
通过标准
能打开自己空间中的 se1yo 仓库;只停留在主仓库不算 Fork 成功。

教师 / 助教检查

先投影演示一个完整 Fork,学生随后操作。不要 100 人同时反复点 Fork。先检查相邻两位同学的地址,再互相检查;出现重名或已有 Fork 时,打开已有副本并由助教判断是否同步,别重复造多个仓库。

Clone:把自己的副本带到电脑上

第 2 步 · 18–30 分钟

在电脑中选一个存放课程文件的目录,在该目录打开终端。本课新建的本地文件夹统一叫 se1yo-classroom;它是本地目录名,不是远程仓库名。

先填用户名 · 只在第一次克隆时执行

若目录已存在,不要删除重来。进入现有目录,请助教检查它是否是本次仓库,然后从检查命令继续。

在 se1yo-classroom 目录执行 · 检查与新建个人分支

检查输出:origin 指向自己的用户名;当前分支显示 learn/部门-班级-姓名。如果已存在同名分支,由助教确认后用 git switch 分支名 切换,不重复创建。

设置提交署名 · 只作用于当前仓库

请把邮箱占位文字改为 Gitee 已验证的邮箱或平台提供的隐私邮箱,再执行。显示名可用“部门-班级-姓名”。提交署名配置不是登录认证,不会自动获得 Push 权限。

✓
通过标准
电脑中有仓库,origin 属于自己,当前位于个人分支。

助教检查

重点看 git remote -v,避免学生克隆主仓库后遇到 403。将“文件夹路径”和“仓库 URL”在投影上分开说明。Git 安装或克隆超过 3 分钟没有进展,登记后转备用路线,主讲继续推进。

05建立自己的作品目录

第 3 步 · 30–35 分钟

在文件管理器打开 se1yo-classroom。如果没有 src,新建它;在其中新建以自己“部门-班级-姓名”命名的文件夹。文件夹必须含实际文件,Git 才能记录。

图 3 / 只在自己的目录里创作

se1yo-classroom/
├── README.md                  保留课程说明,不改
├── LICENSE                    保留许可证,不改
└── src/
    └── 部门-班级-姓名/                  ← 只改自己的这一层
        ├── index.html         浏览器打开就能看
        └── README.md          写作品说明

目录名格式:部门-班级-姓名,用短横线连接。请与同学确认目录名不重复;公开作品里不写手机号和学号。

把下载的两个文件移动到自己的作品目录。浏览器若自动改名为 index (1).html,请重命名为 index.html;开启资源管理器“文件扩展名”后检查,避免保存成 .html.txt。

写两句话,再亲眼看看效果

第 4 步 · 35–45 分钟

用编辑器打开自己的 index.html,修改部门-班级-姓名和学习目标;保存。双击该文件,在浏览器查看结果。作品 README 写清“做了什么”和“怎样运行”。

最低作品要求

  1. 有 Hello, OpenAtom! 标题。
  2. 显示自己的部门-班级-姓名。
  3. 至少写一条自己的学习目标。
  4. README 写“浏览器打开 index.html”。

提前完成可选做

改一处颜色、增加一段学习计划,或给页面加一个链接。先保证能打开、能提交,再扩展功能;本课不要求大型项目。

图 4 / 一份合格的最小作品 · 示例预览

本地文件:…/src/部门-班级-姓名/index.html
JMI-OPENATOM · 开源实操课

Hello, OpenAtom!

部门-班级-姓名:部门-班级-姓名
我想学习:用 Git 记录自己的作品版本。

✓
通过标准
本地浏览器能看到自己修改后的文字;同桌能按 README 打开作品。

教师提示

只投影演示修改两处文字,给学生 7 分钟独立创作和 3 分钟互查。先保证最低作品达标;不在这一步临时讲完整 HTML 语法。

06Commit:给作品留下一条版本记录

第 5 步 · 45–51 分钟

回到终端,确认仍在 se1yo-classroom 根目录。先检查改动,再只暂存自己的目录。

图 5 / Git 的三处位置 · 教学示意

工作区你正在编辑的文件保存 index.html暂存区本次准备提交的改动先看 diff 再提交本地版本库已有提交记录此时还没上传git addgit commit
先检查与暂存 · 不暂存别人的目录
停一下,看输出。文件清单应该只包含 src/部门-班级-姓名/ 下的作品。若出现主 README、别人的目录或其他文件,先找助教检查,不继续提交。
确认范围后 · 生成一次本地提交
✓
通过标准
git log -1 --oneline 能看到自己的提交说明;git status 提示工作区干净。此时作品还只在电脑里。

Push:让个人仓库看到最新作品

第 6 步 · 51–58 分钟
推送当前个人分支到自己的 Fork

根据 Git 客户端与 Gitee 提示完成本人认证。密码或访问令牌只在认证界面使用,不能放进仓库 URL、作品、聊天截图或投影。已启用双因素认证的账号,按 Gitee 当前说明使用支持的令牌或 SSH 方式;本课不要求统一切换认证方式。

  1. 刷新自己的 Fork 仓库。
  2. 切换分支到 learn/部门-班级-姓名,不要只看默认 master。
  3. 打开 src/部门-班级-姓名/,确认两个文件和最新提交说明都在。
100% 不等于验收。终端显示传输进度后,还要检查远程分支和文件。认证失败请交给助教,不反复尝试密码,不用强制推送解决。

助教排队处理

每名助教负责一片区域;只记录目录名、错误文字和卡在哪一步。3 分钟解决不了,保留现场状态并转备用路线或补做队列。不要索取账号密码,也不要让全组共用一个账号来凑完成数。

07PR:把作品贡献给课程仓库

第 7 步 · 58–73 分钟

在自己的 Fork 中找到 Pull Requests → 新建 Pull Request。先核对字段含义,再填写内容。不要死记左右顺序。

图 6 / 合并请求的方向 · 字段位置以 Gitee 当前页面为准

源:我的 Fork你的用户名 / se1yolearn/部门-班级-姓名
→
目标:课程仓库Se1yo-aipacino / se1yomaster

改动从“我”流向“课程仓库”。看到目标仍是自己的仓库时,先改目标仓库。

字段本课正确值
源仓库你的用户名 / se1yo
源分支learn/部门-班级-姓名
目标仓库Se1yo-aipacino / se1yo
目标分支master;若维护者调整,以课程公告为准
文件差异只包含自己目录下的文件,不改首页、许可证或他人文件
复制到 PR 标题和说明 · 按实际作品修改

点击创建前,再看一次文件差异、源分支、目标仓库。创建后保存 PR 链接,交给助教登记;不要把自己的 Fork 首页当作 PR 链接。

✓
课堂提交通过标准
有一个能打开的 PR 链接,目标是课程仓库,差异只包含个人作品。状态“打开/待审核”表示已提交申请,不代表已合并。

接受一次反馈,再完成离场检查

第 8 步 · 73–90 分钟

同桌互查:作品能否打开、README 是否清楚、目录是否只属于本人。维护者需要修改时,在原个人分支修改同一目录,再提交和推送。打开的同一 PR 会继续显示同分支的新提交,不要为一次小修改新建多个 PR。

在原目录和原分支修改后执行

图 7 / PR 状态与下一步 · 教学示意

待审核已提交,等待反馈
→
需要修改原分支改 → Commit → Push
→
已合并维护者已接受贡献

维护者也可能直接合并;被关闭但未合并的 PR,需要先阅读关闭原因再处理。

维护者演示

选 1 个普通示例现场审核,再选 1 个可修正的小问题演示反馈。不要用投影公开批评学生。批量审核放到课后 24–48 小时处理;这是建议安排,主办方需按人手确认后公布。

08备用路线:先用网页完成一次协作

当电脑 Git 或认证问题超过 3 分钟无法解决时,使用这条路线跟上课堂。它能练习平台贡献,不计为已经掌握本地 Git 命令。

  1. 先完成第 1 步 Fork,确认进入自己的副本。
  2. 在自己的仓库中选择“新建文件”或“上传文件”;若页面支持新建分支,优先用个人分支,否则在自己的默认分支提交也可以。
  3. 使用“新建文件”时,文件路径写 src/部门-班级-姓名/index.html,粘贴模板并修改。路径中的斜杠会建立目录;上传界面若不能保留目录,就改用新建文件。
  4. 同样创建 src/部门-班级-姓名/README.md,填写作品说明并提交。
  5. 核对文件出现在自己的分支上,再按第 7 步创建 PR。源分支选择这次实际提交文件的分支,目标仍是课程仓库的 master。
  6. 在离场记录中标注“网页路线”;课后补做 Clone、Commit、Push,并向助教展示。
登录验证仍需本人完成。离线时先保存作品,参加同伴讨论;恢复网络后补提交。未完成登录时不能靠这条路线绕过认证。
需要复制模板代码?点这里展开
网页新建文件时粘贴 · 只粘贴代码内容

09卡住时,先按错误信息定位

先看自己卡在哪一步。举手时说“部门-班级-姓名 + 第几步 + 错误文字”;只截图必要错误,不展示凭据。

“git”无法识别 / command not found

重开终端后运行 git --version。仍失败由助教检查 Git 安装与 PATH;当前先走网页备用路线,不从陌生地址安装软件。

not a git repository / 不在 Git 仓库

终端未进入克隆得到的目录。用文件管理器打开 se1yo-classroom 再开终端,或执行 cd se1yo-classroom。不要在桌面随意运行 git init 来掩盖路径错误。

Author identity unknown / 提交者身份未知

按第 2 步设置当前项目的 user.name 与 user.email,替换邮箱占位文字,再重试 Commit。这和 Gitee 登录密码无关。

nothing to commit / 文件没有进入提交

先保存编辑器文件;确认在正确项目里,目录含实际文件,没有误存到“下载”文件夹。运行 git status;若已经提交,可用 git log -1 --oneline 查看记录。

403 / 没有权限 / Authentication failed

先运行 git remote -v,核对 origin 是否是自己的 Fork。如果不是,先找助教核对 URL;如果是,按平台提示检查本人认证。不要共享令牌、反复猜密码或把凭据写进 URL。

src refspec … does not match any

执行 git branch --show-current 和 git log -1 --oneline,确认分支真实存在且有提交;推送命令里的分支要和输出一致,不盲目把 master 改成 main。

non-fast-forward / 推送被拒绝

远程存在本地尚未包含的更新。停止重复推送,请助教协助同步并处理冲突;不要使用 --force。保留自己的作品文件与当前状态。

PR 没有差异 / 找不到自己的修改

先到自己的远程仓库切换实际推送的个人分支,检查文件。如果文件存在,核对 PR 的源分支和目标仓库;如果目标已经包含改动,查看此前 PR 是否已合并,不重复创建。

PR 目录重复 / 修改了别人的文件

核对目录名是否与别人重复,以及是否只改自己目录。先让助教协助整理差异,再提交到原分支并推送。不要擅自删除他人的目录。

创建 PR 成功,但还没有“已合并”

这是待审核状态。提交 PR 链接,查看维护者反馈;不要为了刷新状态反复发 PR。课堂已提交与最终已合并要分别统计。

网页滑块验证 / 账号登录卡住 / 网络中断

验证由账号本人完成,助教只解释步骤。超过 3 分钟仍失败就记录目录名和卡点、保留作品,参与同伴互查,课后恢复网络或账号后补做;不能把登录失败记为独立提交成功。

10离场前,用证据检查一次

课堂验收:已提交

  • 个人作品能打开,说明可复现。
  • 作品位于自己的目录。
  • PR 指向课程仓库 master,范围正确。
  • 助教登记目录名、PR 链接和路线。

本地路线还需展示一次 Commit 与 Push;网页路线单独记录,安排补做。

课后验收:已合并

  • 读完审核反馈,必要时修改。
  • PR 明确显示“已合并”。
  • 维护者核对文件进入目标分支。
  • 补做者完成本地流程再更新记录。

不承诺学分、奖品或证书。相关权益须由主办方另行明确。

三道离场题

1. Commit 完成后,文件一定出现在 Gitee 上吗?
2. 本课 PR 的正确方向是什么?
3. PR 显示“待审核”,能记作已合并吗?

导出文件不是课程通过证明;是否完成以作品、提交记录和 PR 状态核验。进度不会自动上传给教师。

11教师执行表:让 100 人跟得上

以下为本次新策划建议,需主办方排定人员后执行。100 名学生不分小组,每人使用自己的账号、目录和作品;相邻两人可互相检查。

讲台 / 1 位主讲

统一演示与口令。每次只讲一个检查点,演示结束后再让学生操作,避免一边安装一边讲概念。

教室 / 建议 5 位助教

每位负责约 20 人。不需要学生组长;助教直接汇总就绪人数,不负责代登录或审核合并。

后台 / 1 位维护者 + 1 位机动

维护者持有合并权限、组织审核;机动人员处理网络、投影与安装问题。人员不足时优先扩课时、缩人数或分两场。

T−7
提前一周

发布通知、收集设备情况,确定人员、教室和仓库规则。

T−1
提前一天

完成安装、账号登录、网络演练,确认目录名与离线模板。

T
课堂当天

每阶段由助教汇总全班完成数和卡点,按路线分开记录。

T+2
课后两天内

建议完成第一轮审核反馈、补做辅导和合并状态回查。

90 分钟主方案

时间学生在做什么主讲 / 助教动作检查证据
0–8 分就座、课前检查、理解路线展示完整闭环;确认全班就绪人数账号、Git 版本、目录名
8–18 分Fork 个人副本演示所有者变化;同伴互查地址个人 Fork URL
18–30 分Clone、建分支、设署名检查 origin 和当前分支;分流安装问题终端输出
30–45 分建目录、改模板、浏览器预览只示范最小作品;10 分钟创作与互查目录 + 本地页面
45–58 分Commit、Push检查暂存范围;助教集中处理认证本地记录 + 远程个人分支
58–73 分创建 PR逐字段演示方向;助教登记链接PR 差异与目标仓库
73–83 分互查、体验反馈演示审核 1–2 个 PR;不等待全部合并互查结果与修改记录
83–90 分离场题、登记、说明补做汇总提交 / 卡点 / 网页路线人数PR URL + 离场记录
只有 60 分钟?使用压缩方案

前提:课前完成登录、Git 安装、模板下载和目录名确认,并通过助教预检。否则按原 PPT 做认识与准备课,另排实操课,不强行要求全部完成。

时间内容
0–5 分目标、路线和就绪检查
5–12 分Fork、Clone、建分支
12–25 分模板改造与本地验证
25–38 分Commit、Push、检查远程
38–50 分PR 方向、差异与提交
50–60 分同伴互查、离场题、登记与补做安排

控场与分流规则

  • 阶段报数:每个检查点由助教分区报“完成 X/100,卡点类型”。建议达到 80 人就绪后继续讲,剩余由助教跟进;未达到则压缩选做内容或延后下一步。
  • 两次讲解:先用主讲测试账号演示,再给全班操作时间;投影只显示示例凭据占位文字。
  • 三分钟分流:安装、认证和网络问题超过 3 分钟进入助教队列;转网页路线或补做,避免拖停全班。
  • 课后审核:同伴互查不是维护者审批;分批审核 100 个 PR,不未经检查全部合并。
  • 如实统计:分别记录本地 Git 路线、网页路线、待补做;再区分待审核、需修改、已合并,不能混成一个完成率。

维护者的最小合并清单

  • 目录名不冲突,文件只在该目录中,未改课程仓库说明或他人作品。
  • 能用浏览器打开;README 可复现;没有无关大文件或凭据。
  • 贡献来源清楚;保留项目许可与第三方声明。
  • 有问题先写具体修改建议,确认后再合并;出现冲突由维护者与助教协助处理。

登记表只含部门、班级、姓名和空白核验栏,不预填任何学生个人信息。默认内部使用,不上传到公开仓库。网页无法自动读取学生 PR 状态,需要教师核验。

来源、许可与打开方式

  • 本课主仓库:Se1yo-aipacino/se1yo,以 2026-10-20 读取的 060c60a 版本及 Gitee 入门与开源协作整理为基础。
  • 原活动参考:arivenhe/jmiopenatom-demo1;原文署名何治皓、李淑婕,视频署名范德鑫。原资料 MIT 署名为 Copyright (c) 2025 Arivenhe;许可全文见仓库 第三方资料声明。
  • 概念与命令核对:Git Clone 官方文档、Git Push 官方文档;认证以 Gitee 当前官方帮助和本人账号设置为准。
  • 课程衔接参考:用户提供的《开放原子开源社团_Gitee与Git入门_60分钟整合版》PPT。本页的 90 分钟实操课、目录命名和人员安排为新策划,不替代原活动规则。
  • 品牌:使用社团提供的原始横版 Logo,保持比例、配色与文字,不重绘。图 1–7 均为教学示意,不是 Gitee 官方截图。
  • 新增教学文字与示例代码沿用仓库 MIT 许可(2026 桂国威);社团 Logo 作为用户提供的品牌素材,不因教程 MIT 许可而另行授权商标使用。
HTML 的正确打开方式:下载后用浏览器打开即可,Logo、样式、图解和脚本都已内嵌。Gitee 文件页通常展示源码,不等于网站托管;若浏览器未显示交互,请下载 HTML 到本地打开。本页不依赖外部字体、框架或在线图片,离线也能阅读;跳转仓库和在线协作需要网络。