标题GitHub保姆级入坑指南下篇掌握“平行宇宙”与“交作业”你就是正规军标签GitHub、Git、团队协作、Pull Request、Fork、保姆级教程欢迎来到咱们GitHub系列的最终章在上篇中你已经学会了怎么在VS Code里把代码推送到云端。但如果你以为这就完了那你只学会了“单机游戏”。在真实的职场里写代码永远是“多人在线网游”。如果三四个程序员同时改同一个文件你把代码传上去直接把同事刚写的代码给覆盖了这锅算谁的明天是不是就得卷铺盖走人了为了解决这个“互相踩脚”的问题GitHub发明了两把绝世神兵分支和拉取请求。别被这两个词吓到今天咱们继续用“傻瓜式”的教学把这两个高大上的概念拆解成你小学就懂的动作。一个按钮都不放过保证你学完就能直接去公司里装老手。第一步理解“平行宇宙”——什么是分支打个比方你的项目现在是一个完美的“主线宇宙”叫main分支。现在老板让你加一个新功能“用户登录”但这个功能得写三天万一写崩了把原来的代码搞坏了怎么办正确做法不是直接在主线上改而是用上帝视角克隆出一个“平行宇宙”比如叫add-login分支。你在平行宇宙里随便炸地球、随便改代码就算写成了屎山只要不合并回主线主线就安然无恙。怎么建平行宇宙在VS Code里操作打开上篇咱们建的项目。看VS Code左下角有一行蓝色的小字写着main或者master。这就是你当前所在的宇宙。点击这个蓝色的main。顶部会弹出一个输入框提示你输入新分支的名字。输入add-login注意用短横线别用中文然后按回车。奇迹发生左下角的字变成了add-login从这一秒起你就在平行宇宙里了。你现在新建文件、改代码全都不会影响原来的main。随便造第二步在平行宇宙里干活并传到云端在VS Code里新建一个文件叫login.html随便写点html登录页面/html保存。老规矩点左侧的分支图标- 看到login.html前面有个U- 点旁边的号加入购物车 - 上面写消息“写了登录页” - 点✓打小票。重点来了推送到云端点击底部的同步按钮或者点...找推送。因为这是一个新宇宙GitHub云端还没见过它VS Code可能会弹出一个提示框问你要干嘛。直接点“确定”或者“发布分支”。去GitHub网页刷新一下你会看到仓库默认显示的还是main但旁边多了一个下拉菜单你点开就能看到你的add-login分支了。点进去你的login.html就在里面。第三步核心大招——发起“拉取请求”现在你在平行宇宙里把功能写完了你想告诉老板或同事“老大我写完了你看看行不行行的话就把它合进主线吧。”这个“举手交作业”的动作就叫Pull Request简称 PR。回到GitHub网页。如果你刚推完代码页面上方会有一个巨大的黄色/绿色横幅直接点击上面的“Compare pull request”按钮。如果没有这个横幅就点顶部标签页的“Pull requests”- 点击右边的绿色按钮“New pull request”- 点击上面的compare: main下拉菜单切换成你的add-login分支。进入交作业页面极其重要看清楚每一个地方Open绿色标签意思是这个PR刚发起还没人管。左边框通常写着base: main。意思是“我要把代码合并进主线”。右边框通常写着compare: add-login。意思是“我要拿平行宇宙里的代码去合并”。千万别搞反了反了你就把主线覆盖回平行宇宙了。标题输入框写清楚你干了啥比如新增用户登录页面。描述大文本框详细写一下你改了哪些文件怎么测试的。比如“修改了login.html已在本地测试无误请审核”。点击右下角巨大的绿色按钮“Create pull request”。“啪”作业交上去了第四步代码审查界面——每个按钮都是干啥的现在假设你是老板或者同事你要审查这份作业。这个界面是GitHub最精华的地方。1. 顶部状态栏会显示谁在什么时间发起的PR。如果你看到红色的“Checks failed”说明你们公司配了自动化机器人发现你的代码有语法错误或者没通过测试。这时候千万别合并回去改如果显示绿色的“Checks passed”说明机器觉得没问题。2. “Conversation”聊天标签页这里可以和同事扯皮。同事如果觉得你代码写得像屎可以在这里留言“兄弟你这变量名起得太烂了吧”你可以在这里回复他怼回去。3. “Files changed”改动文件标签页【核心审查区】点击它你会看到你到底改了啥。绿色背景的行你新增的代码。红色背景的行你删除的代码。行内评论按钮鼠标悬停在某一行代码的左边行号上会出现一个蓝色的小号。点它你可以针对这具体的一行代码留言比如“这里的密码必须加密不能明文存储”。4. 右侧边栏的审核按钮【重点】Reviewers审查员可以指定某个人来检查。Assignees指派人这个活儿目前是谁在干。最右边绿色的 “Merge pull request” 按钮别急着点看它旁边有个小三角点开它有三个选项Merge commit保留你平行宇宙里所有的提交记录适合大改动。Squash and merge压扁合并【强烈推荐新手用这个】把你在平行宇宙里写的“改了标题”、“加了一行代码”、“又改了个错别字”这七八条乱七八糟的记录揉成一条干干净净的记录合并进主线。主线看起来极其清爽。Rebase and merge新手别碰容易搞出时间悖论。5. 提交审核结果在页面左侧有一个绿色的“Finish reviewing”按钮。点开后有三个选项Comment评论就看看不表态。Approve批准代码没问题我同意合并。通常只有点了这个才能解锁合并按钮Request changes请求修改代码有严重问题打回去重做点这个后那个绿色的合并按钮会直接消失直到提交者再次修改并推送代码。演示流程老板点了Approve- 选择了Squash and merge- 点击绿色大按钮“Confirm merge”。搞定作业批改完毕平行宇宙正式融合回主线宇宙第五步善后工作——消灭平行宇宙合并完之后GitHub会弹出一个紫色/灰色的按钮“Delete branch”删除分支。新手经常不敢点这个按钮怕把代码删了。听好了狠狠地点它打个比方平行宇宙的任务已经完成了里面的居民代码已经全部搬到主线宇宙了。你现在不把这个废弃的平行宇宙关掉它就会一直留在列表里以后你想找分支时看着满屏的废弃分支能把你逼疯。代码早就安全保存在main里了删掉的只是“分支这个名字”而已。回到VS Code点击左下角的add-login。在弹出的列表里切换回main。点击底部的拉取按钮。你会发现你在平行宇宙里写的login.html现在平平安安地出现在了你的main分支里第六步高级装逼——如何给别人的项目做贡献前面都是自己跟自己玩。如果你看到一个牛逼的开源项目发现它有个错别字你想帮它改掉怎么办你没有权限直接改啊。这时候就要用到Fork派生/ fork叉子了。去别人的项目主页右上角有一个按钮叫“Fork”。点它等进度条走完。你会发现这个项目完完整整地复制到了你自己的账号下。把你自己账号下的这个副本克隆到VS Code里就像中篇教的那样克隆SSH链接。在VS Code里建一个分支比如叫fix-typo。把错别字改掉推送到云端。高能注意现在回到你自己账号下的这个仓库网页点击 “Compare pull request”。这时候你看顶部的对比框base 左边写的是别人原始项目名/maincompare 右边写的是你的名字/项目名/fix-typo意思就是“我想拿我改好的代码合并进你的主线里。”点击创建PR。原作者就会在他的仓库里看到你的PR如果他觉得你改得好点一下 Approve 和 Merge你的名字就永远留在了这个开源项目的贡献者列表里了这就是开源世界的运作法则。第七步终极防御罩——设置“保护分支”在咱们上篇我说过千万别在网页端直接改代码。但总有不长眼的实习生去网页端瞎点或者直接把垃圾代码推到main里。怎么从物理层面上禁止这种行为用“保护分支”。进入你的GitHub仓库点击顶部的“Settings”设置。在左侧边栏往下拉找到“Branches”分支点进去。看到 “Branch protection rules” 旁边有个“Add rule”添加规则按钮点它。在输入框里输入main意思是对主线生效。往下拉看到一堆复选框只勾选一个最核心的✅Require a pull request before merging要求在合并前必须提交拉取请求可选在这个选项下面勾选“Require approvals”要求批准数字填1意思是至少需要1个人同意才能合并。点击底部的绿色“Create”按钮。从这一刻起你的main分支就被焊死了任何人都无法再通过VS Code直接把代码推送到main会直接报错被拒。所有人必须建平行宇宙必须发PR必须有人点Approve才能合并进去。你的项目再也不怕被搞崩了全系列大结局总结恭喜你看到了最后。到这里你不再是那个看到GitHub就发懵的小白了。咱们花三篇文章打通了你的任督二脉上篇网盘玩法认识了网页会建仓库会用历史记录。中篇单机玩法搞定了SSH免密掌握了VS Code里的U - 号 - 勾号 - 推送四步曲。下篇联机玩法学会了建平行宇宙防炸线学会了PR交作业学会了Fork白嫖贡献最后还学会了保护分支做防御。其实GitHub一点都不难它所有的设计都是在为“代码不出错”、“团队好协作”这两个目的服务。不要去死记硬背那些Git命令先把这些图形化的按钮点烂等你哪天觉得点按钮太慢了再去学命令那就是水到渠成的事。去新建一个分支发起你的第一个Pull Request吧少年你的GitHub之旅正式启航