Git:AI 写代码时代,为什么还要懂一点?
温馨提示:若页面不能正常显示数学公式和代码,请阅读原文获得更好的阅读体验。
作者:丁闪闪 (连享会)
邮箱:lianxhcn@163.com
- Title: Git:AI 写代码时代,为什么还要懂一点?
- Keywords: github, 版本控制, 代码审查, 代码管理, AI 协作
🍎 系列推文:AI 写代码时代,为什么还要懂一点?
编者按:让 AI 写代码以后,一个新问题很快会出现:它不只是改一行代码,而是可能一次改掉十几个文件。它会重命名变量,调整路径,新增函数,删除临时文件,重写 README,顺手把结果表输出方式也换掉。代码可能确实更整洁了,但你也可能不知道它到底改了什么,更不知道改坏以后怎么退回去。Git 解决的不是“怎么写代码”,而是“怎么记录、比较、回退和协作”。本文不是 Git 入门教程,而是一份面向 AI 协作场景的 Git 使用手册。懂一点 Git,不是为了变成程序员,而是为了在 AI 修改项目之后,研究者仍然知道:它改了什么,为什么改,哪里可能出错,必要时如何回到上一个能跑通的版本。
参考资料:
- Scott Chacon & Ben Straub, Pro Git.
- Git 官方网站.
- GitHub 官方网站.
- GitHub Docs, Creating a pull request.
- GitHub Docs, Reviewing changes in pull requests.
- GitHub Docs, About pull requests.
- 连享会, GitHub Desktop 使用方法介绍:可视化 Git 管理的效率工具.
- 连享会, Stata 与 Github 交互.
- 连享会, 社会科学研究复现包中的自述文档模板.
- 连享会, 如何整理一份规范的论文复现文档?.
- 连享会, 代码审计:如何从源头确保你的论文可复现?.
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 init、git status、git diff这些是 Git 命令,应当在你电脑本地的终端中运行,而不是在 ChatGPT、Claude、Kimi 或 DeepSeek 的普通对话框里直接运行。
对 Windows 用户来说,常见的终端有:
- Git Bash;
- PowerShell;
- Windows Terminal;
- VS Code 或 Cursor 的内置终端;
- RStudio / Posit 的 Terminal 面板。
对 macOS 和 Linux 用户来说,通常可以直接使用系统自带的 Terminal。
关键不在于你使用哪一种终端,而在于:终端当前所在的位置,必须是项目根目录。
温馨提示:若页面不能正常显示数学公式和代码,请阅读原文获得更好的阅读体验。
