Skip to content

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,依配置而定)。
  • 冲突:同一文件同一行被双方改;需本地解决标记后 addcommit(或继续 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、小步提交、频繁拉取 能显著减痛。