使用AI编码时,应该何时初始化Git?我的实践心得

8 阅读3分钟

使用AI编码时,应该何时初始化Git?我的实践心得

最近我开始尝试用Vibe Coding的方式来开发项目,让AI来辅助编写代码。在这个过程中,我遇到了一个看似简单但值得深思的问题:应该等项目成型后再使用Git,还是从第一行代码就开始版本控制?

  • 代码决策的审计日志 - 记录了每一步为什么改动
  • AI优化的实验室 - 安全地尝试不同的Prompt和方案
  • 代码质量的守门人 - 通过commit记录强制你思考每一步的意义

我的建议:项目第一天就运行git init 这是我在实践中得出的最重要的经验之一。希望对你的AI编码之旅有所帮助!

1. 为什么传统开发中人们会犹豫?

在人工编写代码的年代,很多开发者会觉得:项目还不成熟,加入Git可能显得过度设计。等代码稳定了,功能明确了,再导入版本控制。这个想法在某个时代是可以理解的。

但AI辅助编码改变了游戏规则。

2. AI编码的独特挑战

当你使用AI来生成代码时,出现了一些新的情况:

2.1 生成质量的不确定性

AI生成的代码可能一次就很完美,也可能需要多次调整。如果没有Git,你很难分辨哪个版本是有效的,哪个引入了bug。

2.2 Prompt与代码的对应关系

当某个功能出现问题时,你想回到某个特定的Prompt执行结果来对比。Git commit的message可以记录当时的Prompt,形成代码和指令的完整链条。

2.3 实验和分支

AI可能生成多个不同的解决方案。你想同时尝试不同的实现方式,然后选择最优的。分支管理在这里就变得非常有用。

2.4 快速迭代的代价

用AI编码的速度很快,一下子就生成了大量代码。如果中间有问题,往往很难定位改动是在哪一步引入的。频繁的小commit可以精确追踪问题源头。

3. 我的实践结果

我采用了以下工作流,效果很好:

3.1 项目初期

# Author: liqixin 
# Mail: hi@qixinlee.com 
# Web: https://www.qixinlee.com

git init
git add .
git commit -m "Initial commit - project setup"

3.2 每次AI生成重要代码段后

git add .
git commit -m "Feature: xxx - AI generated with prompt: [prompt关键字]"

3.3 AI代码需要修改时

git add .
git commit -m "Fix: xxx - reviewed and adjusted manually"

这样做的好处显而易见:

  1. 完整的进化链 - 从Prompt到初版代码,再到最终版本,整个过程都记录在案
  2. 快速定位问题 - 如果某个功能出问题,可以通过git log找到相关的所有commit
  3. 安全的实验 - 敢于尝试新想法,因为随时可以回滚
  4. 代码审查友好 - 使用git diff可以清楚看到每个步骤改动了什么
  5. 团队协作准备 - 即使目前是个人项目,这个习惯为未来团队合作打好基础

4. 关键点

4.1 Commit Message要清晰

一定要在message中标注资源来源:

  • "Feature: xxx - AI generated" - 表示AI生成
  • "Fix: xxx - QixinLee manual review"- 表示手工调整

这样回头查看时一目了然。

4.2 创建.gitignore

从项目初期就排除不必要的文件:

node_modules/
__pycache__/
.env
*.log
build/
dist/
.DS_Store

针对你的项目类型调整即可。

4.3 考虑创建分支

对于不确定性较大的功能,创建特性分支尝试:

git checkout -b feature/experimental-ai-solution
# AI生成代码并测试
git add .
git commit -m "Experiment: xxx"
# 如果成功,合并到main
git checkout main
git merge feature/experimental-ai-solution

4.4 定期推送到远程

即使没有团队合作,也建议推送到GitHub或其他平台作为备份:

# Author: liqixin 
# Mail: hi@qixinlee.com 
# Web: https://www.qixinlee.com

git remote add origin https://github.com/你的账号/项目名.git
git push -u origin main