⚠️ Alpha内测版本警告:此为早期内部构建版本,尚不完整且可能存在错误,欢迎大家提Issue反馈问题或建议
Skip to content

第十一章:Git 版本控制与跨平台协作

序言

功能越来越丰富,你的本地 Git 仓库里已经积累了厚厚一摞存档记录。一天,你的好朋友也打算跟你一起做。

你可能以为一个人就能搞定。实际情况是:一个人往往精力分散,而 2-3 人小团队——有人负责前端界面,有人负责后端接口,有人负责写测试——反而跑得更快。Git 协作的核心,就是让每个人专注自己的领域,同时保持代码同步。

现在,为了让朋友能拿到你的代码,老师傅告诉你,你需要把这些本地的存档同步到云端。

云端仓库与认证

他向你介绍了代码托管平台(如 GitHub 或国内的 Gitee)。协作的本质其实很简单:你已经在自己的电脑上通过 AI 养成了良好的提交习惯,现在只需要多一步操作——把本地代码同步到云端。

老师傅推荐 SSH 认证:生成一对密钥(公钥给 GitHub,私钥留给自己),这样每次推送都不用输密码,既安全又方便。

在开始之前,你需要在代码托管平台注册账号。除了 GitHub,国内用户还可以选择 GiteeCNB(国内访问更快)。注册很简单,但在终端里登录往往是新手的第一道坎——当你第一次推送代码时,终端会要求你提供凭证。老师傅特意叮嘱:

  • 不要输入 GitHub 登录密码:GitHub 已禁用密码登录终端
  • 使用 Access Token 或 SSH:Token 是一次性设置,SSH 是长期免密

认证通过后,流程就通顺了:

  • 推送:告诉 AI "推送到远程仓库"
  • 拉取:告诉 AI "拉取最新代码"

这比互相发压缩包靠谱得多,Git 会精准记录每一行代码是谁在什么时候修改的。

跨平台协作

然而,当你的 Windows 电脑遇到朋友的 Mac 电脑时,你踩到了几个经典的跨平台协作大坑。

一:.gitignore 配置

.gitignore 文件在协作阶段的意义是防止污染队友的环境。如果你不小心把 node_modules 上传了,朋友拉取代码时会下载成千上万个不适配他系统的依赖包,导致项目跑不起来。

告诉 AI:"为项目生成合适的 .gitignore,确保不提交 node_modules 和敏感文件"

二:文件名大小写

你的项目在朋友的 Mac 上报错"找不到文件"。你写的是 import Button from './button',文件名叫 Button.tsx,在 Windows 上能跑,但在区分大小写的系统上就会出错。

三:换行符差异

Windows 使用 CRLF,Mac/Linux 使用 LF。这会导致"假 diff"——Git 显示整文件都改了,实际内容没变。

四:路径分隔符

Windows 用反斜杠 \,但代码中应该永远使用正斜杠 /

javascript
// ✅ 正确
import { Button } from 'src/components/Button';
// ❌ 错误
import { Button } from 'src\\components\\Button';

告诉 AI:"配置 Git 自动处理换行符,统一使用 LF"

配置完这些,你和小伙伴的协作就顺畅多了。

自动化 Git 工作流

老师傅提醒你,既然你在用 AI 编程,Git 操作完全可以交给 AI:

"每次完成功能或修复 Bug 后,自动提交并推送到远程仓库"

这样你完全不需要记住具体命令。想知道"AI 到底改了什么"?告诉 AI "显示最近的修改记录" 即可。

查看历史与差异

有时候你想看看"AI 到底改了什么"或者"昨天的代码是怎么写的",告诉 AI:

  • "显示最近 5 条提交记录"
  • "对比上一个版本改了什么"
  • "查看某次提交的详细内容"

AI 会帮你获取并解释这些历史信息。

回滚

Git 是你的"后悔药"。三个常见场景:

场景一:改错了,还没提交 告诉 AI:"撤销对 xxx 文件的所有修改"

场景二:已提交,想回到上一个版本 告诉 AI:"回退到上一个能跑的版本"

场景三:已推送到云端 告诉 AI:"撤销最近一次提交,但不要删除历史记录"

AI 会自动选择合适的命令(checkoutresetrevert),你不需要记住它们的区别。

分支

随着项目变大,你可能想尝试新功能,又怕搞坏现有代码。这时候需要分支(Branch)

老师傅的比喻:分支就像游戏的"存档槽"。主线叫 main(有些旧仓库叫 master),你可以开一个新分支比如 feature-login 折腾新功能。折腾坏了,切回主线;折腾好了,合并到主线。

告诉 AI:

  • "创建一个新分支用于开发 xxx 功能"
  • "切换到主分支"
  • "把功能分支合并到主线"

在协作中,每个人在自己的分支开发,完成后再合并,这样不会互相干扰。

Pull Request 代码审查

在团队协作中,直接把分支合并到主线是危险的——你可能不小心引入了 Bug,影响整个项目的稳定性。

于是,Pull Request(PR) 应运而生。开发完功能后,发起一个 PR 说:"我开发了一个新功能,请检查一下代码,没问题再合并进去。"

这个流程的核心价值是代码审查(Code Review):团队其他人查看代码,提出改进建议,发现潜在问题。研究显示,良好的 Code Review 能减少 80% 以上的错误。在 AI 编程时代,你可以在发起 PR 前让 AI 做 Self-Review,检查逻辑错误、安全漏洞、性能问题等,这样提交的 PR 质量更高。

PR 还带来两个好处:自动化检查(平台自动运行测试,不通过就不允许合并)和讨论记录(在代码行下留言,所有讨论被记录下来)。

老师傅说,虽然对于小团队或者个人项目,PR 可能显得有些繁琐。但当你开始与他人协作,尤其是参与开源项目时,PR 是必不可少的工作流程。不过一开始不用太纠结分支策略,先把主线的自动提交养成习惯,等项目复杂度上来了再引入分支管理。

冲突解决

协作中难免遇到冲突:你和队友同时修改了同一处代码,Git 无法判断该听谁的。

在 VibeCoding 时代,你不需要面对 <<<<<<< HEAD 符号手足无措。把包含冲突标记的文件内容发给 AI:

"解决这个 Git 冲突。保留我和远程最新的逻辑,如果冲突,请以我的为准。"

AI 会帮你完美合并,你只需提交即可。

Git 工作流最佳实践

日常开发:告诉 AI "提交所有修改并推送到远程,写清晰的提交描述"

最常用的命令参考(了解即可,告诉 AI 更方便):

bash
git add .                    # 暂存修改
git commit -m "描述"         # 提交到本地
git push                     # 推送到远程
git pull                     # 拉取远程更新
git log --oneline -5         # 查看最近 5 条提交
git status                   # 查看当前状态

团队协作黄金法则

跨平台协作三原则

  1. 配置 .gitignore:告诉 AI "生成合适的 .gitignore,排除 node_modules 和敏感文件"
  2. 统一换行符:告诉 AI "配置 Git 自动处理换行符为 LF"
  3. 统一路径分隔符:代码中永远使用正斜杠 /,如 src/components/Button

Git 安全警告

⚠️ 绝对不能提交的内容

  • ❌ API 密钥、Token、证书
  • ❌ 数据库密码、连接字符串
  • ❌ 私钥(.pem.keyid_rsa
  • ❌ 环境变量文件(.env.env.local
  • ❌ 个人敏感信息

提交前:告诉 AI "检查是否有敏感文件被提交"

如果已提交敏感信息:告诉 AI "从历史记录中彻底删除 xxx 文件"

常见协作问题速查

问题告诉 AI
推送失败"先拉取最新代码,解决冲突后再推送"
拉取冲突"解决这个 Git 冲突,保留我和远程最新的逻辑"
文件找不到"检查文件名大小写是否正确"
node_modules 污染"从仓库删除 node_modules 并添加到 .gitignore"

冲突解决提示:把包含 <<<<<<< HEAD 标记的文件内容发给 AI

本章学习路径

  1. Git 基础与数据流向 → 理解三区模型,命令交给 AI
  2. 云端仓库与认证配置 → GitHub/Gitee 配置、SSH 设置
  3. 协作问题诊断与解决 → 跨平台问题、冲突解决
  4. 团队工作流最佳实践 → 分支策略、PR、Skills 共享规范

AI 编程时代的 Git:理解概念和工作流,具体命令告诉 AI 即可。


上一章第十章:Localhost 与公网访问

下一章第十二章:无服务器部署与 CI/CD 自动化