Skip to content

什么是 Git

如果只用一句话描述,Git 不是“代码备份工具”,它更像一套记录代码演化过程的系统:谁在什么时候改了什么,为什么这样改,现在要不要撤回来。

它解决的不是“存文件”,而是“管理变化”

如果只是为了留底,压缩包加时间戳也能做到。但项目一旦开始协作,就会出现几个更实际的问题:

  • 两个人同时改了同一块代码,最后到底保留谁的
  • 一个功能改了三天,问题是从哪次提交引入的
  • 线上出 bug 了,要回到哪个版本最稳
  • 某个需求做到一半,能不能先切出去修别的问题

Git 本质上就是在解决这些问题。

我更关心的三个概念

快照,不是网盘目录

每次 commit 可以先理解成一次快照。它记录的是“这一次代码长什么样”,而不是简单把单个文件扔进仓库里。

所以平时看 Git,最好少把它想成“文件管理器”,多把它想成“版本节点管理器”。

分支本质上只是一个引用

很多人刚开始会把分支想得很重,像是复制出了一整套新项目。实际上分支没那么神秘,它更像是“指向某个提交节点的名字”。

也正因为如此,切分支很便宜,删分支也不是什么大动作。真正要小心的是它指向的历史有没有被别人依赖。

Git 默认是本地优先

git addgit commitgit branch 这些操作,大多数先发生在本地。远程仓库只是协作媒介,不是 Git 的全部。

这个点很重要,因为很多撤销类操作能不能安全做,关键就在于:这段历史现在只在你本地,还是已经推给别人了。

在团队开发里,Git 主要帮你做三件事

  • 并行开发:每个人在自己的分支上做事,最后再合流
  • 追踪历史:改动是谁提交的,为什么提交,可以一路查回去
  • 安全回退:代码改坏了,不用靠手动复制粘贴恢复

一个常见误解

Git 很强,但它不是万能撤销键。还在本地的历史,和已经推到远程、已经被别人拉走的历史,处理方式完全不是一回事。

所以后面我把 撤销与回退rebase 单独拆开写,不混在一起。