直观理解
写给:从零开始接触版本控制、想搞懂 git 和 github 是什么、并能在 GitHub 上托管项目和协作的同学。
1.1 没有 git 之前,人是怎么写代码的
想象你在写一篇毕业论文。你会不会只存一份 论文.docx?
大概率不会。你会有一堆:
论文.docx
论文_备份.docx
论文_改完第一章.docx
论文_导师建议后_改完第三章.docx
论文_最终版.docx
论文_真的最终版.docx
论文_打死不改最终版.docx
代码也一样。如果不做版本管理,改着改着就会变成:
main.c
main_改完登录.c
main_加了注册功能.c
main_修复了闪退bug.c
main_2024年3月版本.c
这有几个要命的问题:
- 改坏了不知道改了什么——你改了 100 行,第二天发现跑不了,想回到昨天那版,但已经覆盖了
- 不知道每次改了啥——你打开
main_修复了闪退bug.c,根本不记得具体动了哪行 - 多人合作会打架——你和同学同时改
main.c,他改完传给你,你的改动就没了 - 换电脑就乱套——你在宿舍电脑上改的版本,到实验室电脑上又要拷来拷去,搞不清哪个最新
1.2 git 是什么——给代码装一个"时光机"
git 是一个装在你电脑上的软件,它做三件事:
- 每次你改完代码,告诉它一声(commit),它就把这一刻的代码状态拍一张"快照"存起来
- 你能随时穿越回任何一次快照——昨天改坏了?一秒回到昨天
- 能看到每次改了哪些行——像游戏里的回放,红色删除行、绿色新增行一目了然
最关键的是:git 把这些快照全存在你电脑本地,不需要联网,不需要服务器,你在飞机上、地铁里都能用。
一句话:git 是代码的时光机 + 回放机,让你改代码再也不怕改坏、不怕忘记改了什么。
1.3 github 是什么——给代码租一个"云端保险箱"
git 把快照存在你电脑上,这有个隐患:电脑坏了,快照就没了。
而且你一个人用时光机没问题,但想跟同学合作呢?你的快照在你电脑上,他的快照在他电脑上,怎么合到一起?
github 就是一个云端网站,它做两件事:
- 把你的 git 仓库同步到云端——你电脑坏了也能从 github 拉回来
- 让别人能看你的代码、能发起"修改请求"(这就是 Pull Request,简称 PR)——你说"我改了这些,你看看要不要合进主项目"
所以:
- git 是引擎,装在本地,管时光机
- github 是云端停车场,是个网站,管同步和协作
关系类比:
| git | github | |
|---|---|---|
| 是什么 | 软件 | 网站 |
| 装在哪 | 你电脑上 | 云端 |
| 干什么 | 记录每次改动、回溯历史 | 备份代码、和别人协作 |
| 需要联网吗 | 不需要 | 需要 |
| 类比 | 时光机 | 云端保险箱 |
还有类似 github 的网站:gitlab、gitee(码云,国内)、atomgit。思路都一样,只是不同公司运营。学会 github,其他同理。
1.4 一次典型的工作流程长什么样
把 git 和 github 串起来,你以后的工作流是这样:
- 在本地用 git 改代码,每改完一块就
commit(拍快照) - 改到一定程度,
push(推送)到 github——云端有了备份 - 别人看到你的代码,想提建议,就在 github 上发一个 Pull Request——相当于说"我改了这些,请你合一下"
- 你在 github 网页上看他的改动,同意就点 Merge——他的改动就进你的主线了
就是这么个循环。下面分步教你配好:装 git → 注册 github → 建仓推送 → 提交 PR。