AI 工程版本控制工具先用项目现有 Git。看完代码diff还不够:AI可能新建文件,而普通git diff不会列出未跟踪文件。把两类路径合并后再核对允许范围。
用Git管理AI代码改动的开发者。本文使用 Python 3.11 与已安装的 Git(示例验证版本 2.53.0.windows.2),先验证一组人工构造的小样本。AI 负责提出实现或解释差异,结果由本地检查决定;这里没有把模型回答当成真实运行结果。

核对AI改动文件范围前,先定规则
示例创建一个全新的临时仓库,提交教学基线后改code.py并新建notes.txt;没有连接远程仓库或修改现有工程。
允许改动清单仅含code.py,因此notes.txt必须被报告。未跟踪文件不能靠“diff为空”当作没有变化。
使用NUL分隔读取路径,避免路径含空格时被错误切分。本例文件名简单,真实环境需考虑文件系统编码。
给 AI 的输入要包含什么
把下面这份输入说明和你的实际样本一起交给可用的 AI 编程助手。示例只含虚构数据;对真实材料先去除账号凭据和个人信息。
在临时Git仓库创建基线code.py,改它并新建notes.txt。用git diff --name-only -z加git ls-files --others --exclude-standard -z找全部路径;只允许code.py时报告notes.txt。禁止push,不改用户全局Git配置。
要求模型保留检查条件,并把它认为缺少的业务定义列出来。若回答改变了输入字段、忽略异常分支或直接删除原材料,先要求修正,再运行。提示词的作用是缩小任务范围,验收仍以代码和数据为准。
保存并运行最小验证程序
下方程序把关键规则和验证用例放在同一个可复跑示例中,便于先理解输入如何变成输出,再用它检查 AI 给出的实现。
先确认 git --version 与 python --version 可运行。把代码保存为check.py,在空练习目录运行 python -X utf8 check.py。它创建和清理自己的临时仓库;不在已有项目执行提交,也不联网。
import subprocess
from pathlib import Path
from tempfile import TemporaryDirectory
def git(root,*args):
result=subprocess.run(['git','-c','core.autocrlf=false',*args],cwd=root,capture_output=True,check=True)
return result.stdout
with TemporaryDirectory() as tmp:
root=Path(tmp);git(root,'init','-q')
(root/'code.py').write_bytes(b'value = 1\n');git(root,'add','code.py')
git(root,'-c','user.name=Example','-c','user.email=example@example.invalid','commit','-q','-m','baseline')
(root/'code.py').write_bytes(b'value = 2\n');(root/'notes.txt').write_bytes(b'new file\n')
tracked=git(root,'diff','HEAD','--name-only','-z').decode().split('\0')[:-1]
untracked=git(root,'ls-files','--others','--exclude-standard','-z').decode().split('\0')[:-1]
all_changed=set(tracked)|set(untracked);unexpected=sorted(all_changed-{'code.py'})
assert tracked==['code.py'] and untracked==['notes.txt'] and unexpected==['notes.txt']
print('git_version',git(root,'--version').decode().strip())
print('tracked',tracked,'untracked',untracked,'unexpected',unexpected)
怎样判断结果符合要求
Git实际列出code.py与未跟踪notes.txt,后者超出允许范围。创建基线提交只发生在自动清理的临时仓库。
下方是这份最小示例在本地执行得到的输出。它验证示例程序与断言的关系,不代表任何 AI 模型一次就能生成同样代码,也不构成性能或生产可靠性结论。
git_version git version 2.53.0.windows.2
tracked ['code.py'] untracked ['notes.txt'] unexpected ['notes.txt']
这条范围检查不能证明行为正确或敏感信息没泄露,仍需逐文件diff和测试。
ignore中的新文件不会出现在该untracked清单,需另核对忽略规则与AI可写范围。
哪些失败必须停下来处理
rename、子模块与冲突有额外状态,应沿用项目评审工具读取。
文件超范围时暂停提交,让AI解释并修正;不要自动git clean删除可能属于人的文件。
接入自己的任务前再核对一次
AI动手前记录当前人工改动,动手后以基线比对,而不是假设所有变化都是AI产生。
Git管理代码文本,模型或大数据另按项目存储方案管理;不要把它描述成训练数据版本工具。
资料与适用范围
Git状态含已跟踪和未跟踪文件;git diff与ls-files –others可分别核对工作区变化。以下链接核对于 2026-10-03;运行环境及额外依赖按本文前述说明。
相关基础可阅读 Cursor 怎么自动生成一个功能?先审计划,再检查 diff 与测试。本文的重点是核对AI改动文件范围,可以把两项检查作为不同步骤保留。
Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/33490.html