新人入职,第一天就问我gitlab装哪,我说你先装git。他愣了,说这两个不是一个东西吗。确实很多人把他俩混着叫,一个说提交代码,一个说合并请求,聊的根本不是一层。

一句话,git是版本工具,装在你电脑上管代码历史。gitlab是托管平台,跑在服务器上管协作。没有git,gitlab存不了版本。没有gitlab,git也能在本地玩,只是没法跟同事协作。

git管的是本地历史

init建仓库,add加暂存,commit落快照,branch开分支,log看历史。这些全在本地跑,断网也能提交。remote只是给本地仓库配个远端地址,push才把本地历史推上去。搞懂这层,就不会问出断网能不能提交这种问题了。

gitlab管的是人和流程

  • 成员权限:谁能看、谁能推、谁能合,角色配好
  • 合并请求:MR走评审,CI跑过才能合,质量卡住
  • 流水线:提交后自动构建测试,坏了立刻报警
  • 问题板:需求和缺陷跟代码绑一起,追溯起来方便
本地操作 git init; git add .; git commit -m 提交说明 关联远端 git remote add origin 仓库地址 推送分支 git push -u origin main

实际流程一般是,本地git开分支写代码,推到gitlab开MR,同事评审加CI跑测试,通过再合进主分支。gitlab上的保护分支配好,主分支不让直接推,只能走MR,从根上减少误操作。

市面上还有github、gitee,定位和gitlab类似,都是托管平台。选哪个看公司要求,命令层面都是git那一套,换平台不用重学。

取舍建议。个人练手学git命令就够,找工作或进团队再熟悉gitlab的MR和CI。两个都会,才算真正会协作。