VPNT Technical Report Series
Vol. 2026, No. 1 · 用户层手册
← 目录 / 用户层手册

第 2 章 完整工作流

main 拉分支 → 改 → 提交 → 推送 → 建 PR → review → 合入 → 清理。不直接改 main

clone → pull → 新建分支 → 改文件 → commit → push → 建 PR → review → merge → 清理

本章任务:新增成员卡片 members/<姓名拼音>.md,走完一遍闭环。

2.1 clone:复制远程仓库到本地

git clone <仓库地址>
cd lab-git-practice
git branch -a

2.2 pull:开工前同步主线

git checkout main
git pull origin main

若本地有未提交改动,先 git status 确认,必要时先提交或 git stash

统一 pull 策略:用 rebase。 全局设置一次(已在 0.2 完成):

``powershell git config --global pull.rebase true ``

设置后 git pull 自动使用 rebase,保持历史线性。若遇冲突按第 9 章处理后 git rebase --continue

2.3 新建分支

git checkout -b feature/add-<name>

分支名只用小写英文、数字、短横线。<name> 替换为姓名拼音。

2.4 改文件:新增成员卡片

Copy-Item members\_template.md members\<name>.md
git status  # 确认只改了本次任务的文件

编辑 members/<name>.md,按模板填写五个字段(与脚本校验一致):角色(报告人 / 开发者 / 维护者)、方向入组时间(YYYY-MM)、本周进展联系方式(邮箱,与 git config user.email 一致)。

2.5 自测

python scripts/check-members.py

按提示补齐缺失字段。

2.6 commit

git add members\<name>.md
git commit -m "feat(members): 添加<姓名>成员卡片"

提交信息格式 <类型>(<范围>): <改动内容>,详见第 4 章。

2.7 push

git push -u origin feature/add-<name>

禁止 git push --force。推送成功后 Gitea 会提示创建 PR。

2.8 创建 PR

Gitea 页面:Pull Requests → New Pull Request,源分支 feature/add-<name>,目标 main。标题与 commit 一致。正文写明:

对应 Issue 时正文写 Closes #12

下面三张截图依次演示在 Gitea 网页端创建合并请求的全过程:

创建合并请求(步骤一)

创建合并请求(步骤二)

创建合并请求(步骤三)

2.9 按 review 修改

原分支继续改,不新建分支或 PR:

git checkout feature/add-<name>
# 改文件
git add members\<name>.md
git commit -m "fix(members): 补全<姓名>成员卡片字段"
git push

新 commit 自动追加到原 PR。

2.10 merge 与清理

PR 通过后由维护者点 Merge。合入后:

git checkout main
git pull origin main
git branch -d feature/add-<name>

远程分支由 Gitea 合并时删除。

2.11 参考样例(速查)

在自己的 Fork 里新增成员卡片 members/<姓名拼音>.md,走完完整闭环。步骤与 2.1–2.10 一一对应:

  1. clone(2.1)→ 2. pull main(2.2)→ 3. 新建 feature/add-<name> 分支(2.3)
  2. 复制模板填五个字段(2.4)→ 5. 跑 python scripts/check-members.py 自测(2.5)
  3. commit(2.6)→ 7. push -u(2.7)→ 8. Gitea 开 PR 到 main(2.8)
  4. 按 review 在原分支补改后 push(2.9)→ 10. 合并后清理本地分支(2.10)

自检:

python scripts/check-quest.py 2

← 第 1 章 Git 是什么第 3 章 分支策略 →