核心结论:Git与GitHub已经成为AI时代必学必会的基本功。好消息是,在AI时代我们不再需要死记硬背一大堆Git命令,只需要掌握几个核心概念,就可以直接用自然语言指挥AI完成各种操作。本期基于技术爬爬虾的42分钟动画讲解,带你从零到一吃透Git与GitHub。
一、Git是什么?为什么需要它?
Git是一个开源的版本控制系统。想象一下写论文的经历——第一版、第二版、第三版、定稿版、打死不改最终版……我们小心翼翼保存每个版本,就是为了应对各种突发情况。
但如果一个项目有成百上千个文件,又有成百上千人协同开发,纯人工的方式根本无法负担。Git就是为解决这个难题而生的,它是世界上最多人使用的版本控制系统。
核心概念:Commit(提交)
当一个文件夹被Git管理起来,就变成了一个Git仓库。Git使用**Commit(提交)**作为版本控制的基本单元。每完成一次Commit,Git都保存了一个仓库此时状态的快照。随着Commit越来越多,会形成一条Commit的历史链路,整个仓库都是可回溯的。
两种仓库
| 类型 | 说明 |
|---|---|
| 本地仓库 | 运行在你自己电脑上的Git仓库 |
| 远程仓库 | 上传到服务器的备份,可与他人共享代码 |
GitHub就是全球最大的代码仓库托管与协作平台。全世界的开发者把自己的Git仓库上传到GitHub网站,这个网站就变成了Git仓库的集合——所以叫Git+Hub。
二、Git的三种后悔药
AI时代,我们不需要背命令,但需要理解概念。Git有三种后悔药:
| 操作 | 行为 | 适用场景 |
|---|---|---|
| Discard | 放弃还没有Commit的更改 | 文件改了但还没提交,想撤销 |
| Reset | 强制回退到某个历史状态 | 单人分支,或改动还没上传到远程仓库 |
| Revert | 生成反向提交来撤销某次Commit | 多人协作分支,安全优先 |
重要原则:在多人协作的分支上,禁止使用Reset(有搞丢代码的风险),应该优先使用Revert。
三、Branch(分支)——并行开发的基石
分支简单来说,就是存储库的不同开发线。默认情况下每个仓库都有一个main(或master)分支,也就是主干分支。
创建分支就是创建一个副本——在Git里是通过指针实现的,不需要拷贝代码。当你在分支上进行代码修改并完成Commit,这些新的提交只对当前分支有效,不会影响主干。
分支的核心操作
- 创建分支:基于主干或任何历史提交创建新分支
- 切换分支:在不同分支之间来回切换
- 合并分支:功能开发完成后,把分支合并回主干(Merge)
- 删除分支:合并完成后清理分支
HEAD(头指针)
HEAD一句话总结:当前仓库处于哪一次Commit上。当HEAD不指向任何分支而只指向某次历史提交时,就是"分离头指针"状态——这种状态下最好不要修改代码,容易搞丢。
Worktree(工作树)
本质上是用Git创建一个新分支,然后把新分支的代码完整复制到一个新文件夹。主文件夹和分支文件夹可以并行工作,互不干扰。开发完成后可以轻松合并回主干。
Merge Conflict(合并冲突)
当两个分支修改了同一个文件的同一行代码,Git无法自动确定保留哪个改动。有了AI,解决冲突变得非常简单——AI会给你选项,你可以选择保留任意一个,或两个都保留。
四、Git分区(四区概念)
理解Git的分区模型是掌握Git的关键:
| 分区 | 说明 |
|---|---|
| 工作区(Working Directory) | 你电脑磁盘上的本地文件夹 |
| 暂存区(Staging Area) | Commit之前的检查点 |
| 本地仓库(Local Repository) | Commit后的文件改动的存储地 |
| 远程仓库(Remote Repository) | GitHub等远端服务器 |
大部分Git操作的本质,就是从这些分区里互相同步文件。
git clone:把远程仓库保存到本地,同时创建本地存储库和本地工作目录git add+git commit:把工作区的改动提交到本地仓库git push:把本地仓库的改动推送到远程仓库git pull:把远程仓库的最新改动更新并合并到本地
为了方便操作,现阶段的Git工具(如VS Code)都淡化了暂存区的概念——点击Commit按钮时,同时执行了add和commit两个命令。
五、GitHub核心功能
仓库页面关键元素
| 元素 | 说明 |
|---|---|
| Code(代码库) | 存放整个项目的源代码 |
| README | 项目介绍,自动展示在代码库下方 |
| Release | 发布版本信息,含打包好的软件下载 |
| Star | 类似点赞+收藏,反映项目热度 |
| Fork | 把项目复制一份到自己的名下 |
| Issue | 与项目作者讨论(bug报告、功能建议) |
GitHub快捷键
| 快捷键 | 功能 |
|---|---|
/ | 快速打开GitHub搜索功能 |
t | 快速定位到文件搜索栏 |
l | 快速定位到某一行代码 |
? | 打开快捷键速查表 |
. | 打开网页版VS Code |
b | 查看文件的提交历史(Blame) |
六、多人协作与开源贡献
场景一:开源项目贡献(Fork模式)
如果你没有权限直接向项目提交代码,需要走Fork模式:
- Fork:把开源项目复制一份到自己的名下
- 创建分支:在分支上修改代码(不要在主干上直接修改)
- Commit + Push:提交并推送到自己的远程仓库
- 同步上游:创建PR前,先把母项目的最新改动合并到当前分支,解决冲突
- 创建Pull Request:把自己的分支合并进主干分支的提案
- Code Review:项目维护者审核代码,提出修改意见
- Merge:审核通过后,维护者同意合并
场景二:协作者模式
如果项目管理员把你添加成了协作者,就可以直接往项目的远程仓库Push代码:
- 直接拉分支
- 提交代码并Push到远程仓库
- 创建Pull Request
- 管理员审核后合并
Cherry-Pick(拣选提交)
从某个分支中挑选特定的提交合并到另一个分支。比如在Feature分支上进行了3次提交,但只想把其中2次合并进主干,就可以使用Cherry-Pick。
Stash(临时存储)
当你在一个分支上写代码写到一半,需要紧急切换到另一个分支处理临时任务时,可以使用Stash把没写完的代码临时存储起来,切换回来后再取出来继续写。
Rebase(变基)
Git的高级操作。从最终效果来看,可以认为Rebase是把一个分支合并进了另一个分支。最大的好处是不会创建Merge Commit记录,让历史树更加干净。
⚠️ 重要警告:经过Rebase操作后,必须使用强制推送(force push)。强制推送只适合单人使用的分支,多人协作分支万万不能使用强制推送,可能会覆盖别人的代码。
七、总结
| 概念 | 一句话 | AI时代怎么做 |
|---|---|---|
| Commit | 保存仓库快照,形成历史链路 | 每次让AI完成一个小功能就做一次Commit |
| Branch | 不同开发线,互不干扰 | 让AI在分支上开发,完成后合并 |
| Merge | 把分支合并回主干 | 告诉AI"把Feature合并进main" |
| Reset | 强制回退历史 | “把仓库还原到这次提交的状态” |
| Revert | 生成反向提交撤销 | “把这次提交撤销掉” |
| Cherry-Pick | 挑选特定提交合并 | “把这两次提交Cherry-Pick进主干” |
| Stash | 临时存储未写完的代码 | 告诉AI需要临时切换分支 |
| Rebase | 变基,让历史更干净 | 单人分支使用,多人分支禁止 |
言者所以在意,得意而忘言——在AI时代,我们只需要理解Git操作的本意与原理即可,对具体命令并不需要死记硬背。
本文基于技术爬爬虾视频《Git+Github核心概念大串讲,从零到一全攻略,详细实战教程》整理改写。
