ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Git提交前到底该做什么?一套避免代码丢失和冲突的安全工作流

Git提交前到底该做什么?一套避免代码丢失和冲突的安全工作流 Git提交前到底该做什么一套避免代码丢失和冲突的安全工作流很多人把 Git 当成“改完代码git add .、git commit、git push”的三连工具。直到某一天密钥进了仓库别人的修改被覆盖冲突文件被误删或者本地改了两天的内容在切分支时消失。Git真正难的不是记住命令而是知道每一步在保护什么。本文给出一套先观察、再修改、可撤销的提交工作流。一、先理解四个区域工作区 → 暂存区 → 本地仓库 → 远程仓库 git add git commit git pushgit add .不是保存代码而是把改动全部放入暂存区可能连日志、构建产物和配置密钥一起加入。二、提交前先看状态和差异gitstatus--short--branchgitdiff--statgitdiff--name-only如果看到不认识的文件先确认来源不要删除或覆盖。查看具体改动gitdiff-- path/to/file.pygitdiff--cached-- path/to/file.py第二条查看的是已经进入暂存区的内容。三、按文件或按补丁暂存gitaddpath/to/file.py path/to/test_file.pygitadd-pgitdiff--cached--checkgitdiff--cachedgit add -p可以逐块选择改动。提交前必须确认每一处变化都属于本次任务。四、密钥检查不能省略重点检查 .env、私钥、云服务凭据、数据库导出、内部日志、构建目录和个人配置gitdiff--cached--name-onlygitrestore--stagedpath/to/secret.env.gitignore只能阻止尚未被跟踪的文件。如果密钥已经提交或推送应先轮换凭据再清理历史。五、一次提交只表达一个意图不要把修接口、全项目格式化、升级依赖和重命名目录塞进一个提交。提交信息要说明对象和结果gitcommit-mfix: reject empty order items before payment六、同步远程前不要覆盖本地改动gitstatus--shortgitfetch origingitlog--oneline--decorate--graphHEAD..origin/maingit fetch只更新远程跟踪信息不会自动修改当前分支。不要把git reset --hard当作普通清理命令。七、冲突时不要盲选“我的版本”gitstatusgitdiff--name-only --diff-filterUgitdiff--checkgitaddpath/to/resolved_file.py冲突表示 Git 无法判断两边修改的意图。解决目标是符合业务规则的第三份结果而不是机械选择一边。合并方向错误时可以确认状态后执行git merge --abort。八、提交后发现错误怎么办未推送的最近提交可以使用git commit --amend修改。已经共享的提交通常使用gitrevertcommit-idgitreflog--datelocalrevert保留协作历史reflog用于寻找本地引用曾经指向的位置但不是远程备份。除非团队明确允许不要使用git push --force改写共享历史。九、每天提交前的检查清单□ 当前分支与任务一致 □ 我知道每个改动文件的来源 □ 暂存区没有密钥、日志和构建产物 □ 我看过 git diff --cached □ 本次提交只表达一个意图 □ 相关测试或手动验证已完成 □ 推送前已了解远程是否有新提交 □ 出问题时知道用 revert、merge --abort 或 reflog总结可靠的 Git 习惯不是记住更多命令而是每次操作前都知道它会改变什么、失败后如何回来先看状态再看差异只暂存本次任务需要的内容共享历史用 revert本地误操作用 reflog寻找恢复点。参考资料Git官方文档git-status2026-08-31核验。Git官方文档git-diff2026-08-31核验。Git官方文档git-restore2026-08-31核验。Git官方文档git-fetch2026-08-31核验。Git官方文档git-revert2026-08-31核验。Git官方文档git-reflog2026-08-31核验。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进