当时考虑过SVN,但听说Git的分支功能特别适合敏捷开发,就决定硬着头皮学。刚开始用SourceTree可视化操作,后来发现还是命令行更灵活。我们的项目结构很简单:Scripts放代码,Art放美术资源,Design里是配置表和剧情文本。最初两周确实手忙脚乱,美术提交资源时总忘记拉取最新版本,有次合并冲突直接把场景文件搞崩了,最后还是用git reflog找回历史记录才救回来。
真正体会到Git威力是在开发技能系统时。程序在feature/skill分支写了三天代码,测试时发现严重BUG,但主分支需要继续开发新功能。要是放在以前只能备份整个工程再回退,现在直接git stash把半成品暂存,切回主分支修复紧急问题后,再用git stash pop恢复工作现场,整个过程十分钟搞定。美术组更夸张,他们给每个角色创建feature/character分支,建模、贴图、骨骼动画都在各自分支完成,最后用git merge --no-ff合并,哪天发现模型有问题直接回退到特定提交点,再也不用满世界找备份文件。
最惊险的是上线前夜。策划误操作把测试用的作弊脚本提交到develop分支,眼看明天就要发版,所有人急得冒汗。最后还是Git救了场:用git log找到错误提交的哈希值,git revert生成反向提交,既消除错误代码又保留后续所有修改。那天我们给Git起了个外号叫"时光机",后来还在.gitignore里加了完整过滤规则,彻底杜绝配置文件误提交。
团队现在养成新习惯:每天开工先git pull --rebase,功能完成立即创建Pull Request,代码审查通过才允许合并。有次程序在release分支调试性能问题,突然要改主分支的紧急BUG,直接git worktree add ../project_dev main秒切工作目录,两个分支同时推进互不干扰。美术组甚至开发出资源管理技巧------大文件用git lfs托管,版本号用git describe自动生成,连UI动效参数都交给Git管理。
这次开发让我们明白:Git不仅是代码托管工具,更是项目管理中枢。从分支策略到提交规范,从冲突解决到版本追溯,每个环节都在重塑协作方式。现在回头看那个混乱的网盘时代,简直像原始人刻木记事。最近我们正在实验git submodule管理通用组件,或许下次能聊聊模块化开发的心得。