Git:工作区、暂存区与提交
先学会看改动,提交才会有意义。
01Git 保存的是可回看的状态
工作区是你正在编辑的文件;暂存区是你准备放入下一次提交的内容;提交记录一次明确的版本。保存文件不等于提交,提交也不等于已经有远端备份。Git 安装成功更不等于本项目已经初始化仓库。按你提供的进度,正式仓库仍未建立。
02三个位置的图解
把一次提交看成一份经过选择的改动。修改十个文件,不代表要把十个文件一股脑放到同一提交;尤其在 AI 与人工交替工作时,清楚边界比“全部提交”更有价值。
03已有练习仓库中的只读命令
git status --short
git diff
git diff --staged
git log --oneline -5git diff 默认比较工作区与暂存区;git diff --staged 比较暂存区与当前提交。只看其中一个,可能漏掉已经暂存的内容。没有提交历史时 log 可能报告没有提交,这不是文件丢失。
04一次小提交的练习
- 只在已确认的独立练习仓库里,修改一句 README 文本。
- 先看 git diff,逐行解释变化。
- 用 git add README.md 暂存这个确定文件,再看 git diff --staged。
- 用有意义的消息提交,例如“docs: clarify practice scope”。重新看 status,确认结果。
05亲眼看见暂存区保存的是哪一次修改
在独立练习仓库中给 README 增加第一句话,执行 git diff 看变化,然后只暂存这个文件。接着再增加第二句话,但暂时不重新暂存。此时分别查看 git diff 和 git diff --staged:前者展示尚未暂存的第二次改动,后者展示准备提交的第一次改动。你会看到,同一个文件可以同时包含已暂存和未暂存内容。
这比背“工作区、暂存区、提交”三个名字更重要,因为你以后检查 AI 改动时,经常面对分批修改。不要以为文件名旁出现一个状态就能知道全部内容,也不要在没看差异的情况下再次执行全部暂存。把第一句和第二句分别写在纸上,标出它们目前属于哪里,再用命令输出核对。所有操作只在选定的练习目录进行。
06一次提交应该能用一句具体话说明
假设你同时调整了移动速度、修复了面板关闭和整理了素材名称。它们可能属于三个不同目的,不一定适合塞进一个“更新项目”提交。初学时先练小提交:只修改一个明确问题,读差异、暂存相关文件、提交,再确认工作区还有哪些其他变化。提交消息写改变了什么,比写“最终版”“好了”更容易在以后找回原因。
检查差异时不要只数新增行数。看资源路径是否仍存在,动作名是否与 Input Map 一致,是否意外带入了临时日志、生成缓存或私人文件。若文件是场景或资源文本,行差异只是第一层证据,提交前后仍需要 Godot 验证。Git 能保存某个状态,并不能自动判断这个状态好不好用;一个很整齐的历史也可能保存了没测试的错误。
07把历史、远端和备份分清楚
本地提交保存在当前仓库里,电脑或磁盘出问题时并不会自动出现在另一台设备。远端可以帮助同步或提供另一份副本,但推送仍需要知道目标、权限和包含的内容,不能因为学会 commit 就默认上传全部项目。对于大素材还要确认真实文件是否存在,而不是只有某种存储指针。
本课不需要练习危险的历史改写,也不需要用强制重置来清理不懂的状态。看不懂时先用 status、diff 和 log 收集证据,区分未跟踪、已修改、已暂存和已提交。完成记录可以附一次小提交前后的状态输出,并解释暂存前后两句话的去向。若正式项目尚未建仓,就保留这一事实,不把练习仓库的成功记录写成正式工程已有版本历史。
动手后,再勾选
不是“我看懂了”,而是你在独立练习里做出并检查过。
换一个情景,你会怎么判断?
git commit 完成后,是否一定已有远端备份?
用自己的话,留一条笔记
可以写“我之前以为……,现在发现……”,或者记录还没解决的问题。
↗回到资料核对
本课是解释与练习,不替代对应版本的官方手册。网页实验不运行 Godot;未标明实机验证的代码,仍需在独立工程中检查。
标记已读不会自动勾选实作,也不代表游戏功能已经完成。