AI应用-Git基础
一、核心概念(先理解,再记命令)
Git 追踪的不是"文件",而是快照。每次 commit 就是给整个项目拍一张照片,你可以随时回到任何一张照片的状态。
三个区域的关系:
工作区(你写代码的地方)
↓ git add
暂存区(选好要拍进照片的内容)
↓ git commit
本地仓库(照片存档,只在你电脑上)
↓ git push
远程仓库(GitHub,团队共享)
二、安装与初始配置(一次性)
bash
# macOS
brew install git
# Ubuntu
sudo apt install git
# 配置你的身份(每次 commit 会记录这些信息)
git config --global user.name "你的名字"
git config --global user.email "your@email.com"
# 设置默认分支名为 main(和 GitHub 保持一致)
git config --global init.defaultBranch main
# 设置默认编辑器为 VS Code(写 commit message 时用)
git config --global core.editor "code --wait"
# 查看当前配置
git config --list
三、日常最常用的 10 条命令
1. git init / git clone — 开始一个项目
bash
# 从零开始新项目
mkdir my-ai-app
cd my-ai-app
git init # 当前目录变成 Git 仓库
# 从 GitHub 克隆现有项目
git clone https://github.com/username/repo.git
git clone https://github.com/username/repo.git my-folder # 指定本地目录名
2. git status — 查看当前状态(最高频)
bash
git status
# 输出示例:
# On branch main
# Changes not staged for commit: ← 修改了但没 add
# modified: app/services/llm.py
# Untracked files: ← 新文件,Git 还不知道
# app/services/rag.py
习惯:做任何操作前先 git status,确认当前状态。
3. git add — 选择要提交的内容
bash
git add app/services/llm.py # 添加单个文件
git add app/services/ # 添加整个目录
git add . # 添加所有改动(最常用)
git add -p # 交互式选择,精确控制提交哪些改动
4. git commit — 保存快照
bash
git commit -m "feat: add streaming support to chat endpoint"
# 跳过 add,直接提交所有已追踪文件的改动(新文件不行)
git commit -am "fix: handle empty search results"
# 修改最后一次 commit(还没 push 时用)
git commit --amend -m "fix: handle empty search results in RAG service"
```
**commit message 规范**(团队协作必须遵守):
```
feat: 新功能
fix: 修复 bug
refactor: 重构(不改功能)
docs: 只改文档
test: 只改测试
chore: 构建/依赖/配置相关
perf: 性能优化
示例:
feat: add rerank step to RAG pipeline
fix: prevent prompt injection in user input
refactor: extract embedding service from rag.py
test: add integration tests for document upload
docs: add architecture diagram to README
5. git log — 查看历史
bash
git log # 完整历史
git log --oneline # 每条一行,简洁
git log --oneline -10 # 只看最近 10 条
git log --oneline --graph # 图形化显示分支合并
git log --oneline app/services/ # 只看某个目录的历史
6. git diff — 查看改动内容
bash
git diff # 工作区 vs 暂存区(没 add 的改动)
git diff --staged # 暂存区 vs 上次 commit(已 add 未 commit)
git diff main feature/rag # 两个分支的差异
git diff HEAD~1 # 和上一个 commit 比
7. git branch / git checkout / git switch — 分支操作
bash
# 查看分支
git branch # 本地分支
git branch -a # 本地 + 远程分支
# 创建并切换分支(推荐用 switch,更现代)
git switch -c feature/rag-pipeline # 新建并切换
git switch main # 切回 main
# 旧写法(效果相同)
git checkout -b feature/rag-pipeline
git checkout main
8. git merge / git rebase — 合并分支
bash
# merge(保留完整历史,团队项目推荐)
git switch main
git merge feature/rag-pipeline
# rebase(让历史更线性,个人分支整理时用)
git switch feature/rag-pipeline
git rebase main # 把 main 的最新改动接到当前分支基础上
9. git push / git pull — 和远程同步
bash
# push:把本地提交推到 GitHub
git push # 推当前分支
git push origin feature/rag # 推指定分支
git push -u origin feature/rag # 第一次推,-u 建立追踪关系
# pull:拉取远程最新改动(= fetch + merge)
git pull # 拉当前分支
git pull origin main # 拉指定分支
# fetch:只下载,不合并(先看看有什么改动)
git fetch origin
git log origin/main --oneline # 看远程有哪些新提交
10. git stash — 临时搁置改动
bash
# 场景:你在 feature 分支写了一半,突然要去修 main 上的 bug
git stash # 把当前改动暂存起来,工作区变干净
git switch main
# 修 bug...
git switch feature/rag
git stash pop # 把之前的改动恢复回来
# 有多个 stash 时
git stash list # 查看所有 stash
git stash pop stash@{1} # 恢复指定的
git stash drop stash@{0} # 删除某个 stash
四、.gitignore(必须配置)
告诉 Git 哪些文件不要追踪——API Key、虚拟环境、缓存文件绝对不能进仓库:
gitignore
# .gitignore
# 环境变量(最重要!API Key 不能泄露)
.env
.env.local
.env.*.local
# Python
__pycache__/
*.pyc
*.pyo
.pytest_cache/
*.egg-info/
dist/
build/
.coverage
htmlcov/
# 虚拟环境
.venv/
venv/
env/
# 上传文件(体积大,不应进仓库)
uploads/
*.pdf
*.docx
# IDE
.vscode/settings.json
.idea/
*.swp
# macOS
.DS_Store
# 日志
*.log
logs/
```
---
## 五、团队工作流(Feature Branch Workflow)
这是 AI 应用开发最常用的协作方式:
```
main(始终可部署,只接受 PR 合并)
↑ PR
feature/rag-pipeline ← 你在这里开发
feature/agent-tools ← 同事在这里开发
fix/prompt-injection ← 修 bug 的分支
完整的一次开发流程:
bash
# 1. 从最新的 main 开始
git switch main
git pull # 确保 main 是最新的
# 2. 新建功能分支
git switch -c feature/rag-pipeline
# 3. 开发,频繁提交(小步提交,每个提交只做一件事)
# 写了文档解析功能
git add app/services/parser.py
git commit -m "feat: add PDF and docx parser"
# 写了切块逻辑
git add app/services/chunking.py
git commit -m "feat: implement recursive chunking with overlap"
# 写了 embedding 调用
git add app/services/embedding.py
git commit -m "feat: add OpenAI embedding service with batch support"
# 4. 推到 GitHub,发 Pull Request
git push -u origin feature/rag-pipeline
# 5. 在 GitHub 上创建 PR,等代码审查
# 6. 审查通过后合并到 main(在 GitHub 上点 Merge)
# 7. 本地清理
git switch main
git pull # 拉取合并后的 main
git branch -d feature/rag-pipeline # 删除已合并的本地分支
六、处理冲突
两个人改了同一行代码就会产生冲突,不用慌,按步骤处理:
bash
# 拉取最新代码时发生冲突
git pull
# CONFLICT (content): Merge conflict in app/services/rag.py
# 打开冲突文件,会看到:
<<<<<<< HEAD # 你的改动
async def retrieve(query: str, top_k: int = 5):
======= # 对方的改动
async def retrieve(query: str, top_k: int = 10, rerank: bool = True):
>>>>>>> origin/main
# 手动编辑,保留正确的版本(删掉标记行):
async def retrieve(query: str, top_k: int = 10, rerank: bool = True):
# 标记冲突已解决
git add app/services/rag.py
git commit -m "merge: resolve conflict in retrieve function signature"
VS Code 打开冲突文件会有图形化界面,点按钮选"接受当前"/"接受传入"/"两者都要",比手动编辑方便。
七、撤销操作(救命命令)
bash
# 撤销工作区的改动(还没 add,不可恢复)
git restore app/services/llm.py # 撤销单个文件
git restore . # 撤销所有改动
# 撤销 add(还没 commit,改动还在工作区)
git restore --staged app/services/llm.py
git restore --staged .
# 撤销最后一次 commit(保留改动,改动回到工作区)
git reset HEAD~1 # 最常用
git reset HEAD~1 --soft # 改动回到暂存区
# 撤销最后一次 commit(丢弃改动,危险!)
git reset HEAD~1 --hard
# 已经 push 了,用 revert(不改历史,只加一条"撤销"的 commit)
git revert HEAD # 撤销最后一次 commit
git push # 推到远程
# 找回误删的内容
git reflog # 查看所有操作历史(包括已删除的)
git reset --hard HEAD@{2} # 回到某个状态
八、AI 应用项目的 Git 实践
项目开始时必做的三件事:
bash
# 1. 初始化仓库
git init
git remote add origin https://github.com/你/你的项目.git
# 2. 先提交 .gitignore(在任何代码之前)
touch .gitignore # 填入上面的内容
git add .gitignore
git commit -m "chore: add .gitignore"
# 3. 再提交其他文件
git add .
git commit -m "feat: initial project structure"
git push -u origin main
养成这三个习惯,能避免 80% 的 Git 问题:
提交前先 git status,确认改动范围是否符合预期,没有多提交测试文件或 .env。
commit message 用动词开头描述做了什么,不写"update"、"fix bug"这种没有信息量的词。
功能没做完也可以提交——wip: start RAG retrieval service 比几天不提交然后一个大 commit 好得多,出问题时好定位。
九、速查卡
|
场景 |
命令 |
|
查当前状态 |
|
|
提交所有改动 |
|
|
新建并切换分支 |
|
|
切换已有分支 |
|
|
推到 GitHub |
|
|
拉取最新代码 |
|
|
临时搁置改动 |
/ |
|
查看提交历史 |
|
|
撤销未提交改动 |
|
|
撤销最后一次提交 |
|
|
查看文件改动 |
|
十、推荐资料
|
资料 |
链接 |
说明 |
|
Pro Git 中文版 |
最权威,前3章必读 |
|
|
Learn Git Branching |
交互式可视化,分支操作最好的练习工具 |
|
|
GitHub Skills |
在真实 GitHub 仓库里练习 |
|
|
Oh Shit, Git! |
专门讲怎么从各种 Git 事故里恢复 |
学 Git 没有捷径,花一个下午把 Learn Git Branching 的基础关卡全部打通,剩下的命令在实际项目里用就自然记住了。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)