为什么需要它
心智模型
新手最常见的困惑就是:Git 和 GitHub 是不是一回事?不是。把它们混为一谈,后面看教程会处处卡壳。打个比方:Git 是你的个人写作工具(本地笔和纸),GitHub 是公共图书馆(把写好的内容放上去展示、借阅、共同修改)。分清两者,你才能知道哪些操作在本地做、哪些在网页上做。
历史背景 · 它为什么诞生诞生于 2005-2008
诞生Git:Linux内核早期靠补丁文件传递代码,2002年起用商业工具BitKeeper;2005年BitKeeper免费许可取消,Linus Torvalds两周内自研Git。GitHub:Git缺托管与协作层——没有统一存放代码的地方、没有易用的协作界面,2008年由Tom Preston-Werner等创建,以"Social Coding"为理念。
演进Git从2005年首版演进为易用工具,2005年7月起由Junio Hamano维护。GitHub从"代码托管"演变为完整协作平台(Fork/PR/Issues/Pages/Releases/CI),2018年被微软收购,使Git成为开源协作的基础设施。
历史教训
被逼无奈的原生需求往往催生最坚固的设计;底层协议成功不代表产品完整,托管与协作层是规模化使用的关键;生态与网络效应远比工具本身值钱。
功能介绍
Git 是一个运行在你电脑上的版本控制工具(version control tool),负责在本地记录代码历史、创建分支、合并改动,全程不需要网络。GitHub 则是基于 Git 的代码托管平台(code hosting platform)和协作社区:官方定义为'GitHub 的核心是一个开源的版本控制系统,叫做 Git'。也就是说,GitHub 在 Git 之上提供了网页界面、远程仓库存储、Issues 讨论、Pull Request 代码审查等功能,让多人协作和开源共享变得简单。你可以只用 Git 完全不碰 GitHub,但用 GitHub 时底层一定依赖 Git。关系可以概括为:Git 是引擎,GitHub 是装了引擎的车。
核心术语
Git:本地的分布式版本控制工具GitHub:基于 Git 的代码托管平台与协作社区托管平台(hosting platform):存放并展示代码的云端服务远程仓库(remote repository):托管在 GitHub 服务器上的仓库副本
适用场景
- 当你想在本地管理代码历史、却不需要联网协作时,用 Git
- 当你想把代码备份到云端、或公开给别人使用时,用 GitHub
- 当你想参与开源项目、给别人提改进建议时,用 GitHub
- 当你分不清'在本地做的'和'要在网页上做的'时,先想想底层是谁
怎么操作(网页 vs 命令行 双轨)
🖱️ 网页操作 (GitHub.com)
- 注册 GitHub 后,通过网页创建仓库(Repository)来托管代码
- 在仓库网页上直接浏览代码、查看提交历史、发起 Pull Request
- 在网页设置中配置远程仓库地址,供本地 Git 推送使用
⌨️ 命令行 (进阶)
git init # 在本地把目录变成 Git 仓库(本地用 Git)git push origin main # 把本地提交推送到 GitHub(衔接两者)git pull origin main # 从 GitHub 拉取最新改动到本地
新手建议先从网页操作入手,熟悉概念后再尝试命令行。命令行是真实开发中更常用的方式。
与其他功能的关系
| 关系(前置依赖 / 包含从属 / 概念升级 / 流程承接) | 说明 |
|---|---|
| 概念升级版本控制基础(Version Control Basics) | 先理解版本控制思想,才能分清 Git 工具与 GitHub 平台 |
| 流程承接账号与个人主页(Account & Profile) | 明白 GitHub 是什么后,注册账号开始使用平台 |
官方文档
小结
SUMMARY
Git 是本地版本控制工具,GitHub 是基于 Git 的云端托管与协作平台。遇到操作先想一句:这一步在本地还是网页?理清边界,后面 13 个节点就会顺畅很多。下一步:注册账号并搭建你的个人主页。