DevOps 和 Git,Gitlab

DevOps理念大白话总结

一、软件开发是怎么进化的?

以前开发软件像盖房子

  • 瀑布模型:一步步来,需求→设计→编码→测试→上线,中间不能回头。如果后面发现问题,只能等下次大改,像装修完了才发现插座装错位置,得拆墙重来。

  • 迭代/增量模型:先搭个毛坯房给人看,再一层层装修、调整,边干边改。

  • 敏捷开发:把大项目拆成小模块,一两周就出一个能用的版本,让客户试用提意见,再快速改。有点像"小步快跑、快速试错"。

二、那DevOps又是啥?

说白了,DevOps就是让开发(Dev)和运维(Ops)不再互相甩锅

以前:开发写完代码丢给运维,"我这边跑得好好的,你部署出问题是你的事!"

运维:环境不一样、配置不同,一上线就崩,怪我们?

测试:你们俩都不靠谱,bug一堆......

DevOps的目标:大家坐一条船,共同为软件稳定、快速上线负责

核心做法:自动化一切能自动化的 ,从写代码、构建、测试、部署到监控,打通全流程,实现持续集成、持续部署(CI/CD)

三、为什么需要DevOps?

  1. 市场变化快:现在做App、网站,要求几天甚至一天发好几个版本,传统模式跟不上。

  2. 容器技术(如Docker)和微服务让拆分解耦更容易,反过来也催生了DevOps。

  3. 减少浪费:开发中大量时间浪费在"等测试""等审批""等环境",DevOps用自动化省掉这些无聊等待。

  4. 避免"技术债":赶工出来的代码后面改不动,DevOps鼓励持续优化。

四、DevOps有啥好处?

  • 速度快:以前一周发一次版本,现在一天能发十次。

  • 风险低:每次只改一小点,出了问题容易回滚,不像以前攒一个月的大版本,上线崩了全员加班。

  • 反馈快:用户用上新功能,第二天就能收集意见,快速调整。

  • 人舒服:开发不用半夜爬起来处理部署问题,运维不用手工复制文件、改配置。

五、DevOps具体怎么玩?

一个循环流程:计划 → 编码 → 构建 → 测试 → 发布 → 部署 → 运维 → 监控 → 再回到计划

常用工具举个栗子:

  • 代码管理:Git + GitLab

  • 构建:Maven / Gradle

  • 容器:Docker

  • 集成自动化:Jenkins(写脚本自动跑)

  • 代码质量检查:SonarQube

  • 容器管理:Kubernetes(K8S)

  • 通知:钉钉机器人(部署成功或失败自动发消息)

六、DevOps三大原则

  1. 流水线原则:让工作像流水一样顺畅,少做无用功,小步快改,可视化进度。

  2. 反馈原则:尽早发现错误,快速修复,别把问题憋到最后。

  3. 持续学习:鼓励尝试,不怕失败,把改进当成日常工作。

七、CICD和DevOps啥关系?

  • CICD是一种自动化实践:包括持续集成(代码合并后自动构建、测试)、持续交付(自动打包上传,手动点一下部署)、持续部署(自动直接上线)。

  • DevOps是一种文化/理念 :强调打破部门墙,共同目标。而CICD是实现这个文化的重要技术手段

可以这样记:DevOps是"指导思想",CICD是"干活工具"

八、两种流水线模式:Push vs Pull(GitOps)

  • Push模式:CI系统把编译好的镜像"推"到仓库,再触发部署。缺点:密钥可能写在代码里,不安全。

  • Pull模式(GitOps):集群里有个"监视器",发现配置仓库有变化(比如新镜像地址),就主动"拉"过来部署。更安全、声明式,现在流行。


一句话总结:DevOps就是让开发和运维不再打架,通过自动化工具把"写代码 → 上线 → 反馈 → 改进"这个圈转得飞快,从而更快、更稳地做出用户想要的东西。

一、Git 是干啥的?

Git 就是一个记录文件改动历史 的工具,尤其适合多人一起写代码。

比如你写论文,改来改去最后想找回第一版,Git 就能帮你轻松跳回去。它还能防止大家改同一行代码时互相覆盖。

二、Git 的三个"房间"

Git 把你的项目分成三个区域,方便你控制哪些改动要保存:

  1. 工作区 -- 就是你电脑上看到的文件夹,随便改。

  2. 暂存区 -- 相当于"购物车",用 git add 把想保存的改动放进去。

  3. 版本库 -- 真正存档的地方,用 git commit 把购物车里的内容打包成一个历史版本。

流程:改代码 → git add → git commit

三、常用命令(挑最常用的说)

初始化 & 克隆
  • git init -- 在当前文件夹里建一个 Git 仓库(生成隐藏的 .git 目录)。

  • git clone https://... -- 把远程仓库整个下载下来。

配置
  • git config --global user.name "你的名字" -- 设置你的名字,提交时会用到。
增删文件
  • git add 文件名 -- 把某个文件放进暂存区。

  • git add . -- 把当前所有改动都放进暂存区。

  • git rm 文件名 -- 删除文件,并记录这次删除。

提交
  • git commit -m "说明文字" -- 把暂存区的改动正式存为一条历史记录。
查看状态
  • git status -- 看看哪些文件改了、哪些在暂存区。

  • git log -- 查看历史提交记录。

  • git diff -- 对比当前文件和上次存档的区别。

分支(相当于平行宇宙)
  • git branch -- 列出所有分支。

  • git branch 新分支名 -- 创建新分支。

  • git checkout 分支名 -- 切换到某个分支。

  • git checkout -b 新分支 -- 创建并切换。

  • git merge 分支名 -- 把另一个分支的内容合并到当前分支。

远程同步
  • git fetch -- 下载远程仓库的最新内容(但不合并)。

  • git pull -- 下载并自动合并到你的代码里。

  • git push -- 把你的本地提交上传到远程仓库。

撤销
  • git checkout 文件名 -- 把工作区的文件恢复到上次提交的状态(撤销未暂存的修改)。

  • git reset 文件名 -- 把暂存区的文件撤出来,但工作区不改动。

  • git reset --hard -- 放弃所有未提交的改动,回到上一次提交的状态(危险)。

  • git stash -- 临时藏起当前未完成的修改,以后再恢复。

四、GitLab 是什么?

GitLab 就是一个网页版的 Git 仓库托管平台 ,类似 GitHub。

除了存代码,它还带了很多协作功能:

  • 在线看代码、提合并请求(MR/PR)

  • 管理团队权限(谁能看、谁能改)

  • 自动备份、CI/CD 自动打包部署等。

五、GitLab 常用概念

权限角色(从低到高)
  • Guest -- 只能提 Issue、写评论,不能看代码。

  • Reporter -- 可以克隆代码,但不能上传。

  • Developer -- 可以正常推送代码、创建分支。

  • Maintainer -- 可以合并分支、保护分支、管理成员。

  • Owner -- 拥有全部权限,能删项目、改可见性。

项目可见性
  • Private -- 只有被邀请的人能看到。

  • Internal -- 公司内部所有登录用户都能看到。

  • Public -- 任何人都能看到。

六、团队协作的两种常见方式

1. 普通团队协作(所有人都在同一个仓库)
  • 小明克隆仓库 → 创建 feature/小明 分支 → 开发 → 推送分支 → 在 GitLab 上发起合并请求(MR) → 组长审核 → 合并到主分支。
2. Fork 协作(外部贡献者)
  • 外部人员把主仓库复制一份到自己的名下(Fork)→ 在自己仓库里修改 → 向主仓库发起拉取请求(PR) → 管理员审核合并。

七、安装 GitLab(一句话)

  • 用清华镜像源配置 yum 仓库,然后 yum install gitlab-ce 就能装上。

  • 装完后用 gitlab-ctl reconfigure 初始化配置,gitlab-ctl start 启动。

八、实用小技巧

  • 修改本地分支名:git branch -m 旧名 新名

  • 删除远程分支:git push origin :旧分支名

  • 后悔提交了:git commit --amend 可以修改上一次提交的说明或内容。

相关推荐
乐于分享的阿乐1 小时前
Git下载安装与零基础使用完整教程
git
qq_白羊座2 小时前
GitLab CI + Jenkins 双流水线模式Jenkins 端配置
ci/cd·gitlab·jenkins
qq_白羊座2 小时前
CI/CD 与 DevOps 二
运维·ci/cd·devops
qq_白羊座2 小时前
GitLab CI 与 Jenkins
ci/cd·gitlab·jenkins
console.log('npc')2 小时前
git发版上线的时候,打tag标签方便jenkins部署
运维·git·jenkins
lisanmengmeng2 小时前
gitlab 配置的jenkins 链接错误
运维·gitlab·jenkins
qq_白羊座3 小时前
CI/CD 与 DevOps 三
运维·ci/cd·devops
2601_948810603 小时前
DevOps
运维·devops
直接冲冲冲12 小时前
研0-准备claude
git·github