01 它是干嘛的
GitHub 是全世界程序员存放与协作代码的平台。它建立在 Git 这个版本控制工具之上,把「代码的历史」和「多人协作的流程」变成网页上可看、可评论、可合并的操作,也是当今开源生态的中心。
02 为什么会有它
先说清楚:Git 是工具,GitHub 是放工具成果的场地
写代码最大的痛点是「改动无法回退」和「多人改同一份文件会打架」。在 Git 出现之前,大家靠「复制一份文件夹,改坏了再复制回来」来保命,文件名于是变成 project、project_旧、project_最终、project_真的最终,谁也说不清哪份能用。
2005 年,Linux 内核的作者写了 Git:一个装在你电脑上的工具,它记录每一次改动,让你能随时回退、开一条分支去试验而不影响主线。但 Git 只在本地运行,它不管你代码放在哪里,也不管怎么和别人共享,这是「工具」的部分。
2008 年出现的 GitHub 是「场地」:把用 Git 管理的代码放到网上,配上网页界面,让全世界都能看到、下载、提意见。它最有影响的发明是「拉取请求」(Pull Request):你想改别人的代码,不是硬塞进去,而是先提一个「请你看看我这版改动」的申请,对方可以逐行评论、来回讨论,觉得没问题才合并。这套「先讨论、后合并」的流程,后来成了全球软件开发协作的标准动作。
03 它怎么工作
开发者先把仓库复制一份到自己账号下(或拉一条分支),改完推上去,再发一个拉取请求请求合并;原仓库维护者审查后决定是否接受。
一次改动从提出到合并进主线
- 1① 复制或拉取代码
把仓库复制到自己账号下,或在原仓库拉一条独立分支,改动不影响主线。
- 2② 在本地修改并提交
在自己的电脑上改代码,每次提交都留下一条带说明的改动记录。
- 3③ 推送到 GitHub
把本地提交上传到自己账号下的仓库,此时还没影响原项目。
- 4④ 发起拉取请求
向原仓库提交一个合并申请,说明改了什么、为什么改,等待对方审阅。
- 5⑤ 评审、讨论与合并
维护者逐行评论,必要时要求补充修改;确认无误后合并进主线,改动正式生效。
04 谁在用它
把自己的项目放上去,既是备份,也是一份能给别人看的作品与技术履历。
多人通过分支与拉取请求协作,每个人的改动都要经过审查才进入主线。
给别人的开源项目提改动、报问题,被合并后即成为公开的贡献记录。
项目被全球开发者使用与改进,维护者通过评审把控代码质量与方向。
代码提交后自动跑测试、构建与部署,配上发布流程实现持续交付。
05 怎么用
会一点命令行与 Git 基本操作即可,只用网页也能完成大部分协作。
- 01注册账号,在首页新建一个仓库(Repository),选择公开或私有。
- 02在本地安装 Git,把仓库复制到电脑上。
- 03修改代码后提交(记录改动),再推送回 GitHub。
- 04需要多人协作时,拉一条分支开发,不直接改主线。
- 05完成后在网页上发起拉取请求,写清改动内容,请同事评审。
- 06评审通过后点击合并,改动进入主线;必要时再触发自动测试与发布。
# 配置身份(首次使用)
git config --global user.name "你的名字"
git config --global user.email "you@example.com"
# 复制仓库到本地
git clone https://github.com/你的账号/你的仓库.git
cd 你的仓库
# 新建分支开发,不直接改主线
git checkout -b feature/login
# 修改文件后,记录并推送改动
git add .
git commit -m "新增登录页面"
git push origin feature/login避坑提示
- !千万不要把密码、密钥等敏感信息提交进仓库,一旦推上去,历史记录里也会一直留着。
- !改动尽量小而聚焦,一个拉取请求只做一件事,评审更快也更不容易出错。
- !写清提交说明(改了什么、为什么),过几个月回头还能看懂自己当初在干什么。
06 关键概念
- 仓库(Repository)
- 一个项目在 GitHub 上的存放处,包含全部代码与每一次改动的历史。
- 分支(Branch)
- 从主线分出来的一条独立开发线,改坏了也不影响主线。
- 拉取请求(Pull Request)
- 「请你看看我这版改动并考虑合并」的申请,可以逐行讨论。
- 开源
- 把代码公开、允许他人查看与使用甚至改进,很多基础软件就是这么诞生的。