Git 与 GitHub 核心概念大串讲:AI 时代必学基本功

前言

Git 与 GitHub 已经成为 AI 时代必学必会的基本功。很多 AI Agent 的核心功能都是直接围绕 Git 来运行的。

在 AI 时代,我们不再需要死记硬背 Git 命令,只需要掌握几个核心概念,就可以用自然语言指挥 AI 完成各种操作。正如庄子所说:「言者所以在意,得意而忘言」——理解 Git 操作的本意与原理即可,具体命令交给 AI。

一、GitHub 名字拆解

Git = 版本控制系统

Git 是一个开源免费的软件,核心功能是版本控制。想象一下写论文时保存的「第一版、第二版、定稿版、最终版、打死不改最终版」——这就是最原始的版本控制。纯人工方式无法应对成千上万人协同开发,Git 就是为了解决这个难题而诞生的。

Hub = 中心、汇聚、集合

全世界的开发者把用 Git 管理的项目上传到 GitHub,使其成为全球最大的代码仓库托管与协作平台。仓库分两种:公开仓库(开源,所有人可浏览学习)和私有仓库(仅自己可见)。Linux、CPython、Nginx 等著名开源项目都托管在 GitHub 上。

其他远端仓库服务还包括 GitLab、Bitbucket、Gitee 等。

二、本地 Git 仓库核心概念

1. Init(初始化)

把一个文件夹用 Git 管理起来,变成 Git 仓库。会生成 .git 子文件夹存放所有版本控制信息,删除 .git 就取消了 Git 管理。

2. .gitignore(忽略文件)

声明哪些文件不应受 Git 管理。典型场景包括:

  • 密钥文件(如 .env)——不应上传到 GitHub
  • node_modules/(第三方依赖包)——可用 npm install 随时下载

最好在项目初始化时就创建好,从一开始就避免提交不该提交的内容。

3. Commit(提交)

每次提交 = 仓库此时状态的快照。所有文件状态都被记录,随着提交越来越多,形成一条 commit 历史链路。整个仓库可回溯,每个参与者的每次改动都被记录。

提交通过哈希算法自动生成唯一 ID,有长 ID 和短 ID(短 ID 是长 ID 前 7 位)。跟 AI 交流时最好直接用 commit ID,更加精确。

4. 三种「后悔药」

操作 行为 使用场景
Discard 放弃还没 commit 的更改 文件更改还没提交时
Reset 强制回退到某个历史状态 单人分支或改动还没推送到远端时可用;多人协作分支上禁止使用
Revert 生成反向提交抵消某次 commit 多人协作分支上优先使用,比较安全

5. 比较提交差异

可以让 AI 比较任意两次 commit 之间的改动,只需用自然语言告诉 AI:「比较这两次提交有什么区别」。

三、分支(Branch)

核心概念

分支 = 存储库的不同开发线。默认有 main 或 master(主干分支)。创建分支 = 创建副本(底层通过指针实现,不需要拷贝代码)。新分支上的提交不会影响主干,各分支修改互不影响。

为什么需要分支?

  • 多人/多 Agent 并行开发
  • 功能开发完毕后 merge(合并)回主干
  • 合并后一般删除分支

HEAD 指针

HEAD 指向当前仓库处于哪一次 commit 上。切换到 main → HEAD 指向 main 的最新提交;切换到 feature → HEAD 指向 feature 的最新提交。detached HEAD 则是指 HEAD 不指向任何分支,而指向某次历史提交,只适合查看不要修改。

四、Worktree(工作树)

本质是用 Git 创建新分支,把代码完整复制到一个新文件夹。主文件夹和分支文件夹可以并行工作,互不干扰,分支文件夹的改动都能轻松合并回主干。

  • Codex:右键项目 → 创建永久工作树 → 给分支起名
  • Claude Code:claude --worktree 命令启动,完成后让 AI 提交、合并回主干、删除 worktree

五、合并冲突(Merge Conflict)

发生场景: 两个分支修改了同一个文件的同一行代码,Git 无法自动确认保留哪个改动,需要人工决定。

用 AI 解决冲突时,可以让 AI 合并时遇到冲突就停下来让你选择——可以选择保留任意一个、两个都保留等。

六、Git 的四个分区

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
┌──────────────┐
│ 工作区 │ Working Directory — 你正在编辑的文件
└──────┬───────┘
│ git add
┌──────┴───────┐
│ 暂存区 │ Staging Area — 提交前检查点
└──────┬───────┘
│ git commit
┌──────┴───────┐
│ 本地仓库 │ Local Repository — 永久保存的提交历史
└──────┬───────┘
│ git push
┌──────┴───────┐
│ 远端仓库 │ Remote Repository — 分享/备份代码
└──────────────┘

分区间的同步操作:

  • clone:远端 → 本地,同时创建本地仓库和工作目录
  • add + commit:工作区 → 暂存区 → 本地仓库
  • push:本地仓库 → 远端仓库
  • pull:远端仓库 → 本地(= fetch + merge)
  • fetch + merge:远端仓库 → 本地(分两步,先获取再合并)

七、远端仓库实战

方法一:Git Clone(先有远端仓库)

在 GitHub 上创建新仓库 → 复制仓库地址 → VS Code → Source Control → Clone → 粘贴地址 → 选择本地文件夹 → 修改 → commit → push

方法二:本地推送到远端(先有本地仓库)

本地文件夹先 git init 初始化 → commit 一次 → 点击 Publish Repository → 填写远端仓库名 → 选择公开/私有 → 推送成功

本地与远端的分支状态

  • origin/main = 远端仓库的 main 分支
  • main = 本地仓库的 main 分支
  • 向上箭头 = 本地有提交未上传
  • 向下箭头 = 远端有提交未拉取

八、GitHub 网站核心页面

  • Repository 页面:存放项目源代码,每个文件后有 commit message 和最后更新日期
  • README 文件:Git 自动读取并展示为项目介绍
  • Releases:记录发布版本信息,Assets 里有打包好的软件
  • Star:点赞+收藏,反映项目热度
  • Fork:把项目保存一份到自己名下,用于深入学习、DIY 修改、通过 PR 贡献回原项目
  • Issues:与项目作者讨论 Bug 或新功能期待

实用快捷键

快捷键 功能
. 打开网页版 VS Code
T 文件搜索栏
L 定位到行号
G C 跳转到代码
G I 跳转到 Issues

九、开源贡献完整流程

以”小跟班为爬爬虾的开源项目贡献代码”为例:

  1. Fork → 把项目复刻到自己名下
  2. Clone → 把自己名下的子项目克隆到本地
  3. 创建分支 → 一定不要在主干分支上修改! 创建分支的好处是同步上游代码时不会冲突
  4. 在分支上修改代码 → commit → push
  5. 同步上游项目最新代码 → 创建 PR 之前必须做!先合并母项目的最新改动,确保没有冲突
  6. 创建 Pull Request → 选择合并方向
  7. 代码审核(Code Review) → 管理员审核代码,可提修改意见
  8. Merge → 管理员点击 Merge 按钮同意合并
  9. 贡献者名字出现在项目的贡献者列表中 🎉

如果管理员把开发者添加为项目协作者,协作者不需要 Fork,可以直接拉分支 → 提交 → push → 创建 PR。

十、进阶操作:Cherry-Pick 与 Stash

Cherry-Pick(拣选提交):从某个分支上挑选特定的提交合并到另一个分支。例如 feature 分支有 3 次提交,只想合并其中 2 个——把需要的 commit ID 复制给 AI,让 AI cherry-pick 进主干。

Stash(临时存储):不是暂存区! 场景是在 feature 分支写代码写了一半,需要紧急切换到 main 处理任务。用 Stash 临时存储没写完的代码 → 切换分支工作 → 切回来 → Pop 拿回来继续写。

十一、Rebase(变基)

把当前分支的根基变更到另一个分支上。效果是把 feature 分支的提交重新”挂”到 main 分支后面,不会产生 merge commit,让历史树更干净。

效果上看:把 main 合并进了 feature;实际操作:把 feature 的根基变更到 main,原提交生成新的 commit。

⚠️ 重要:Rebase 后必须强制推送(git push -f),但强制推送只适合只有你一个人使用的分支。多人协作分支万万不能强制推送,可能覆盖别人的代码。

核心要点总结

  1. 四个分区 — 工作区、暂存区、本地仓库、远端仓库
  2. 三种后悔药 — Discard(未提交)、Reset(强制回退,慎用)、Revert(反向提交,安全)
  3. 分支本质 — 指向提交的指针,创建/切换极快
  4. 冲突解决 — AI 可以帮忙,人工做选择
  5. 开源贡献 — Fork → 分支开发 → 同步上游 → PR → Code Review → Merge
  6. AI 时代 — 理解概念 > 死记命令,用自然语言指挥 AI 完成 Git 操作

本文内容整理自技术爬爬虾的 B站视频 《Git+GitHub 核心概念大串讲》,笔记整理日期:2026-05-20。