Git 入门与协作:提交、分支与合并策略
知识背景
Git 是分布式版本控制系统:每台机器可有完整历史,提交(commit) 形成有向无环图;远程(remote) 用于多人同步。理解 工作区、暂存区、本地仓库 三层状态,是避免「代码丢了」「合错分支」的前提。
日常与 GitHub/GitLab 配合:clone、push、pull、Merge Request / Pull Request。
知识详解与通俗解释
1. 三个区域与基本命令
- 工作区:磁盘上你能直接改的文件。
- 暂存区(index):
git add后「准备提交」的快照。 - 本地仓库:
git commit生成不可变提交对象(带父提交指针)。
常用流:修改 → add → commit → push。
通俗说:工作区像草稿纸;暂存区像「装进信封待寄」;commit 像「邮戳生效的一封邮件」,有唯一哈希。
2. 分支与合并
- 分支是指针,指向某次提交;
HEAD通常指向当前分支最新提交。 git merge:保留分叉历史,产生合并提交(或 fast-forward)。git rebase:把当前分支的提交「挪到」另一分支顶端,历史更线性;已推送的公共分支上慎用 rebase,避免改写他人基于旧历史的提交。
通俗说:merge 像两条河汇合;rebase 像把支流整体接到干流下游,河道更直但改写了支流上的「里程碑编号」。
3. 远程协作
git fetch:只拉远程对象,不自动改工作分支。git pull:通常是fetch+merge(或rebase,依配置而定)。- 冲突:同一文件同一行被双方改;需本地解决标记后
add再commit(或继续 rebase)。
4. 实用技巧
git stash:临时搁置工作区,切分支修 bug再回来。git log --oneline --graph:看图理分支。.gitignore:忽略构建产物、密钥、IDE 配置,避免误提交。
5. 提交信息规范(工程习惯)
团队常用 Conventional Commits(如 feat:、fix:),便于生成 changelog 与自动化;与分支策略(Git Flow、Trunk-Based)配合由项目约定。
总结
- add管暂存,commit 管快照,push 管同步。
- merge 保历史,rebase 线性化;公共分支避免强推改写。
- 冲突是常态:理解 diff、小步提交、频繁拉取 能显著减痛。