Skip to content

约 3 分钟阅读

Git 总览 ​

Git 管理的是文件快照及其提交关系。以订单导出为例:开发者同时修改了导出逻辑和调试日志,可以只暂存导出逻辑,形成可审查提交;同事修改权限后,双方再合并并验证。提交、共享、评审、部署是不同动作,Git 本身不会替代测试或发布系统。

从订单导出修改到共享评审的Git闭环

先分清三个问题 ​

准备交付哪些内容? 工作区是当前文件,暂存区是下一次提交候选。修改文件后执行 add,随后继续编辑,并不会自动更新已暂存内容。提交前同时看 git diff 和 git diff --staged,才能区分留下的工作与要交付的工作。

这些修改依赖哪段历史? 分支只是提交引用,合并和变基改变的是提交关系。分支不会复制一套独立目录;需要同时打开两个版本时用 worktree。共享分支上有人继续开发后,改写提交会改变他们依赖的历史,应优先新增提交或 revert。

远端现在是什么状态? origin/main 是本地远程跟踪引用,不是实时查询。先 fetch 再比较;push 成功说明远程引用更新,不代表评审、CI 或部署已经完成。

按任务选择页面 ​

现在遇到的问题阅读入口可以得到什么
不清楚 add 与 commit 到底记录哪份文件核心概念工作区、暂存区、对象与引用的关系
需要安装、提交、查看差异或暂存工作日常命令可复制操作及各命令的输入范围
两人同时修改,需要同步或解决冲突分支与合并、协作流程merge/rebase/cherry-pick 的判断与评审闭环
需要拆提交、写评审描述提交规范围绕一个意图组织变更
误提交、误删、需要撤销公共变更撤销与恢复按工作区、索引、引用和共享历史选择操作
仓库克隆慢、历史大、依赖多对象库与大型仓库、仓库组织Partial/Sparse/LFS 与多仓库边界
密钥误提交或需要权限治理安全与仓库治理先撤销凭据,再评估历史和传播范围
需要定位回归、并行检出或版本标签进阶操作、生态工具bisect、worktree、Hooks 与平台能力
需要自建持续集成和发布GitLab CI/CD托管、Runner、权限和发布边界
希望连续学习视频系列分集主题与配套阅读路径

一次日常提交 ​

下面假设已有本地功能分支、远程名为 origin,并配置了正确上游;src/order-export.ts 替换为实际文件。先确认范围,再提交,避免把日志或凭据混入。

bash
git status -sb
git diff -- src/order-export.ts
git add -p -- src/order-export.ts
git diff --staged
git commit -m "fix(export): 修复空结果导出"
git fetch origin
git status -sb

fetch 后检查目标分支的变化,再按协作约定 merge 或 rebase 并测试,最后 push。不要把固定的 pull --rebase 当成所有分支的无条件前置步骤;更新本地 main 时通常用 pull --ff-only,发生分叉就停下来理解历史。

能力验证 ​

入门阶段应能解释“文件改了两次、只 add 一次,commit 会记录哪次”,并用暂存差异核实。协作阶段应能在临时仓库制造一次冲突,完成合并或取消,说明处理后需要验证的业务行为。

维护阶段应能从已知提交找回文件,在误操作后用新分支保护仍可找到的提交,并区分 Git bundle、工作区文件和 LFS 对象的备份范围。具体演练见相应细节页,不在总览重复所有命令。

常见误区 ​

操作习惯容易遗漏什么判断办法
每次直接 add 整个目录未跟踪文件、调试修改、无关配置先检查状态,按文件或补丁暂存
新建分支就认为改动已备份分支只保护提交引用未提交内容另存、stash 或临时提交
用工作区干净判断已交付ignored 文件、未推送提交、平台检查分别核对状态、远程引用与 CI
把 force-with-lease 当成绝对保护默认租约依赖本地跟踪引用共享分支先协调,必要时核对明确预期 OID
合并成功就认为功能正确自动合并也可能产生业务错误验证权限、导出结果与失败路径
别急,先让缓存热一下。