模块 0 - Foundations · 第 02 课
分支、冲突与 AI 项目安全边界
让实验、模型和 Agent 改动都可审查、可恢复、不会意外泄露。
一个可审查的改变
把“一个想法”变成一条短分支:先写目标,再改最少文件,运行验证,提交一个动词开头的 commit。分支隔离的是正在变化的快照,不是备份系统;真正的备份还需要远端和可恢复的提交。
冲突实验
git switch -c conflict-a
echo "owner: A" >> notes.txt
git add notes.txt && git commit -m "docs: add owner A"
git switch main
git switch -c conflict-b
echo "owner: B" >> notes.txt
git add notes.txt && git commit -m "docs: add owner B"
git switch main
git merge conflict-a
git merge conflict-b
打开 notes.txt,保留正确内容,删除 <<<<<<<、=======、>>>>>>>,然后运行 git add notes.txt 和 git commit。不要用强制推送“解决”冲突。
训练资产的边界
代码、配置模式和小型测试适合 Git;用户数据、私有数据、API key、模型权重和可再生缓存通常不适合。为大文件或数据仓库选择专门存储,并在 README 写清获取方式。
Hooks、检查与 review
本地 hook 可以在 commit 前运行格式化或测试,但 hook 不是安全边界:CI、review 和远端保护仍然需要。把“我运行过什么”写进 PR 描述,review 重点看行为、数据边界和回滚路径。
快速检查
git status是否显示了你以外的改动?先停下来。.env是否被忽略?用git check-ignore -v .env验证。- 合并前是否有干净的工作树?避免把无关实验一起合并。
练习
在模板中加入 .gitignore 和 .env.example,故意创建 .env 并确认 git status 不显示它。再写一条 commit,说明为什么没有提交 checkpoint。
参考答案
忽略规则只能阻止未追踪文件进入候选集,已经提交的 secret 仍需撤销和轮换;所以第一次提交前检查 `git diff --staged` 和 `git status` 很重要。
第 02 课 学习进度仅保存在当前浏览器。