写代码就像写日记,改来改去是常事。你有没有过这样的经历:昨天改的代码跑得好好的,今天加了个功能突然全崩了,想退回却不知道从哪下手?这时候,Git 版本管理就是你的后悔药。
为什么开发者离不开 Git
Git 不是数据库,但它在开发流程中和数据库一样重要。它记录每一次代码的变动,让你可以随时查看、还原甚至分支出不同的开发路线。比如你在做一个小项目,想尝试一种新的数据存储方式,又怕搞砸主流程,那就用 Git 创建一个新分支。改得再狠也不怕,主干代码稳稳地待着。
很多团队协作项目都依赖 Git。你写的代码提交到远程仓库,同事能立刻拉取更新,也能看到你改了哪些文件。这种透明化让多人开发不再混乱,谁改了哪一行都能查到。
几个常用命令就够日常用了
刚开始不用把所有命令都背下来。掌握这几个,就能应付大多数场景:
git init # 初始化一个本地仓库
git add . # 把所有改动加入暂存区
git commit -m "修复用户登录问题" # 提交一次版本,加上说明
git status # 查看当前修改状态
git log # 看提交历史,像翻时间线一样
当你在本地修完一个 bug,想推送到远程仓库(比如 GitHub 或 Gitee),就用:
git push origin main
如果别人已经更新了代码,你得先拉下来合并:
git pull origin main
误操作了怎么办?回退有招
手滑把不该删的代码删了?别慌。只要还没提交,用 git checkout 就能恢复:
git checkout -- file.txt # 还原某个文件
要是已经提交了,但还没推送到远程,可以用上一次提交覆盖当前状态:
git reset --hard HEAD~1 # 回退到上一个版本
HEAD~1 表示“当前版本的前一个”,数字可以改,想退三步就写 HEAD~3。不过一旦推上远程,回退就得小心,最好和团队打个招呼。
分支不是高级操作,而是日常工具
很多人觉得分支很“高级”,其实它就像手机里的应用多开模式。你在主分支(main)上稳定运行程序,同时开个 feature/user-login 分支专门写登录功能。写完了测试没问题,再合并回去。
git branch feature/login # 创建分支
git checkout feature/login # 切换到该分支
# 或者一步到位:
git switch -c feature/login
等新功能验证通过,回到主分支合并即可:
git switch main
git merge feature/login
合并后如果没冲突,代码就整整齐齐地加进去了。有冲突也不用怕,Git 会标出冲突文件,你手动选留哪部分就行。
和数据库一样,定期“备份”很重要
你可能每天都在操作数据库,做备份计划。Git 其实也是另一种形式的备份。每次 commit 都是一次快照,远程仓库更是相当于异地容灾。就算本地硬盘坏了,代码还在云端。
建议养成“小步提交”的习惯。不要攒一天的改动一次性提交,而是每完成一个小功能就 commit 一次。这样出问题时定位快,团队协作也更清晰。
比如你正在优化数据库查询性能,改了三个文件。测完一个阶段,就提交一次,备注清楚做了什么:
git add db_query.py model_user.py
git commit -m "优化用户查询索引,响应时间减少40%"
这样的记录,比你自己记笔记还管用。