温馨提示:若页面不能正常显示数学公式和代码,请阅读原文获得更好的阅读体验。

作者: 丁闪闪 (连享会)
邮箱: lianxhcn@163.com

  • Title: Git:AI 写代码时代,为什么还要懂一点?
  • Keywords: github, 版本控制, 代码审查, 代码管理, AI 协作

🍎 系列推文:AI 写代码时代,为什么还要懂一点?

编者按: 让 AI 写代码以后,一个新问题很快会出现:它不只是改一行代码,而是可能一次改掉十几个文件。它会重命名变量,调整路径,新增函数,删除临时文件,重写 README,顺手把结果表输出方式也换掉。代码可能确实更整洁了,但你也可能不知道它到底改了什么,更不知道改坏以后怎么退回去。Git 解决的不是“怎么写代码”,而是“怎么记录、比较、回退和协作”。本文不是 Git 入门教程,而是一份面向 AI 协作场景的 Git 使用手册。懂一点 Git,不是为了变成程序员,而是为了在 AI 修改项目之后,研究者仍然知道:它改了什么,为什么改,哪里可能出错,必要时如何回到上一个能跑通的版本。

参考资料:

1. AI 改了什么,你知道吗?

以前写论文代码,很多人用文件名管理版本:

main.do
main-修改版.do
main-最终版.do
main-最终版2.do
main-真的最终版.do
main-投稿版.do

这套方法虽然土,但还能勉强看出一点修改顺序。AI 介入以后,这个方法很快失效。因为 AI 不一定只改一个文件,它可能同时改:

01_clean_data.do
02_merge_policy.do
03_construct_variables.do
04_regression.do
tables.do
README.md
requirements.txt

或者在 R / Python 项目里同时改:

clean_data.R
model.R
plot.R
report.qmd
utils.py
README.md

这时,单靠文件名已经无法回答几个基本问题:

  • AI 到底改了哪些文件?
  • 每个文件改了哪些行?
  • 哪些修改是必要的,哪些是顺手改的?
  • 结果变了,是因为模型改了,还是样本处理改了?
  • 如果新版本跑不通,能不能退回上一个能跑通的版本?

Git 的价值就在这里。它不是替你写代码,而是记录项目变化。你可以把每一次重要修改保存成一个节点。以后项目出错时,不必凭记忆猜“昨天到底改了哪里”,而是可以直接查看差异,必要时回退。

所以,AI 时代学 Git 的目标不必设得很高。多数经管社科研究者不需要一开始就掌握复杂分支、rebase、cherry-pick 或 GitHub Actions。比较现实的目标是:

能记录一个能跑通的版本,能查看 AI 改了什么,能撤回错误修改,能把项目同步到 GitHub,能和合作者在同一个项目上有序协作。

这已经足够改变研究项目的管理方式。

2. Git 不是 GitHub

很多初学者会把 Git 和 GitHub 混在一起。二者相关,但不是一回事。

Git 是版本控制工具,记录本地项目的修改历史。GitHub 是代码托管和协作平台,可以把 Git 项目放到网上,方便备份、共享、协作和代码审查。

可以这样理解:

Git      = 本地版本控制
GitHub   = 远程托管和协作平台
GitHub Desktop = 可视化 Git 客户端

你完全可以只在本地使用 Git,不把项目传到 GitHub。对于含有敏感数据、未公开论文、保密项目的研究,先在本地使用 Git 记录版本,已经很有价值。

如果项目需要和学生、合作者或助研协作,可以再考虑 GitHub。GitHub 的好处是:

  • 可以远程备份;
  • 可以多人协作;
  • 可以用 issue 记录任务;
  • 可以用 pull request 审查修改;
  • 可以在线查看每次修改的 diff;
  • 可以发布公开复现包、课程材料或在线书。

如果不想一开始使用命令行,可以从 GitHub Desktop 这样的可视化工具入手。连享会此前已经介绍过 GitHub Desktop 使用方法介绍:可视化 Git 管理的效率工具 和 Stata 与 Github 交互,可以作为延伸阅读。

但无论使用命令行、GitHub Desktop、VS Code,还是 Cursor、Claude Code、Codex 这类 AI 编程工具,背后的逻辑都是一样的:

Git 记录修改,GitHub 管理协作。

3. 先把项目纳入版本控制

一个研究项目在使用 Git 前,最好先有基本目录结构。例如:

my_project/
├── data_raw/        原始数据
├── data_clean/      清洗后的数据
├── code/            R、Python、Stata 代码
├── output/
│   ├── tables/      表格
│   └── figures/     图形
├── docs/            论文、讲义、说明文档
├── README.md
└── .gitignore

所谓“项目根目录”,就是项目最外层文件夹。上面这个例子中,data_raw/code/output/README.md 和 .gitignore 所在的这一层,就是项目根目录。

3.1 Git 命令在哪里执行?

需要先说明一点:git initgit statusgit diff 这些是 Git 命令,应当在你电脑本地的终端中运行,而不是在 ChatGPT、Claude、Kimi 或 DeepSeek 的普通对话框里直接运行。

对 Windows 用户来说,常见的终端有:

  • Git Bash;
  • PowerShell;
  • Windows Terminal;
  • VS Code 或 Cursor 的内置终端;
  • RStudio / Posit 的 Terminal 面板。

对 macOS 和 Linux 用户来说,通常可以直接使用系统自带的 Terminal。

关键不在于你使用哪一种终端,而在于:终端当前所在的位置,必须是项目根目录

温馨提示:若页面不能正常显示数学公式和代码,请阅读原文获得更好的阅读体验。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐