当前位置: 首页 > news >正文

DevOps 实践指南:Git 版本控制从入门到精通

一、核心概念

1.版本控制概念

       版本控制系统是一种记录一个或若干个文件内容变化,以便将来查阅特定版本内容情况的系统。

  • 记录文件的所有历史变化 
  • 随时可恢复到任何一个历史状态 
  • 多人协作开发

2.版本控制类型

       SVN:集中式的版本控制系统,只有一个中央数据仓库,如果中央数据仓库挂了或者不可访问,所有的使用者无法使用SVN,无法进行提交或备份文件。开发者需要时刻与服务器保持连接。

       git:分布式的版本控制系统,每个开发者都拥有完整的代码仓库副本,可以在本地进行版本控制和管理。开发者可以独立工作,不依赖于网络连接。

3.两种类型对比

GitSVN
共同点存放代码,版本控制存放代码,版本控制
工作模式分布式版本控制系统中心化(权限集中)
使用入门较难,熟练后容易使用,目前使用率高入门比较简单,服务端linux,客户端windows
分支创建和维护分支方便创建和维护分支繁琐

4.git架构解析

  • 工作区(Working Directory):是开发者用于编辑和修改代码的本地目录,其中包含了当前的代码文件。
  • 暂存区(Staging Area):也称为索引(Index),是一个中间区域,用于将工作区中的变更提交到版本库之前进行准备。开发者可以选择性地将某些文件或修改添加到暂存区。
  • 本地仓库(LocalRepo):是存储代码和历史版本的地方,本地版本库位于开发者的本地计算机上,属于个人开发者应用。
  • 远程仓库(RemoteRepo:是存储代码和历史版本的地方。远程版本库通常位于中央服务器上,属于团队共享。

二、git部署及使用

1.部署

yum -y install git

2.必掌握git的8个核心命令

命令作用DevOps 场景应用
git init初始化仓库新项目初始化
git clone <url>克隆远程仓库获取CI/CD流水线代码
git add -A添加所有变更准备提交构建产物
git commit -m "msg"提交变更附带Jira任务ID
git push origin main推送到远程触发CI/CD流水线
git pull --rebase拉取并变基避免合并污染历史
git log --oneline --graph查看历史排查部署问题
git restore <file>撤销修改快速回退错误更改

3.git初始化配置

#配置git用户
git config 
git config --global user.name 'liux'
git config --global user.email '1573374330@qq.com'
git config --global color.ui true
git config --global --list#初始化代码目录
mkdir -p /app/src/liux-app
cd /app/src/liux-app
git init
ll .git/#书写案例代码,添加文件
echo liux-app >index.html#查看仓库状态
git status#进行提交
git add .#提交到本地仓库   -m 添加注释
git commit -m '项目完成60%'#查看提交日志
git reflog

       如下图所示,git初始化配置已完成

4.git基础命令

git init            初始化本地仓库目录
git status          显示工作空间的状态
git add file        提交数据到缓冲区(暂存区)  git add .提交所有文件
git commit          把暂存区的数据提交到本地仓库 git commit -m "标记/说明"
git rm --cached     删除暂存区的文件
git checkout -- test.txt 将暂存区的内容覆盖到工作目录
git reset --hard 版本号   代码回滚到指定历史版本
git checkout            文件下载到工作空间并可以使用 git checkout .
git HEAD    显示当前所出于哪个分支,指代当前分支的最新提交的commit id
git rm file 删除文件
git diff    比对工作目录和暂存区的不同
git diff    比对的是暂存区和本地仓库的不同
git reflog   查看所有提交的历史版本信息
git log --oneline         # 一行简单的显示commit信息
git log --oneline --decorate  # 显示当前的指针指向哪里

5.git分支branch

5.1 分支简介

       Git 分支(Branch) 是 Git 的核心功能之一,允许开发者在同一个代码库中创建独立的分支线,用于并行开发新功能、修复问题或隔离实验性代码,而不会影响主分支(如 main/master)。每个分支相当于一个独立的快照,开发者可以自由切换、合并或删除分支,最终通过 mergerebase 将变更集成到主分支。分支的轻量级设计使得团队协作高效且灵活,是多人协作和版本控制的关键工具。

5.2 分支基本命令
命令说明
git branch查看分支
git branch name创建分支
git branch -d name删除分支
git checkout 分支名称切换分支
git merge 分支名字合并(吸收)分支(把指定的分支合并到当前分支中)
git checkout -b name创建分支并切换到这个分支
5.3 分支基本使用
#查看分支
git branch
#创建分支
git branch shopping 
#切换分支
git checkout shopping#切换带shopping分支后写代码
echo 'hello liux' > hello.txt#把 shopping分支合并到master分支中,先切换到master 然后执行merge.
git checkout master 
git merge shopping

       如下图所示:

6.git连接公有仓库

6.1 仓库类型
  • 公共仓库:gitee.com/github.com

  • 私有仓库:gitlab,gogs

6.2 创建仓库

6.3 上传代码到gitee仓库
  • 用户名/密码方式连接仓库

#添加远程仓库(用户名密码方式)
cd /app/liux-app
git remote add origin https://gitee.com/liuxing88/liux-app.git
#查看远程仓库
git remote -v
#上传本地仓库的内容 到远程仓库
git push -u origin "master"

       如下图所示,已经讲本地代码上传到gitee仓库了

  • 密钥认证连接远程仓库

#先在本地生成密钥对,将公钥拷贝到远程仓库中
ssh-keygen
ll ~/.ssh/id_rsa*#然后拷贝公钥到gitee中,具体流程在下图git remote rename origin origin-bak
git remote -v
git remote add origin git@gitee.com:liuxing88/liux-app.git#测试
echo 'hello liux' > liux.html
git add .
git commit -m "liux"
git push origin master 

       如下图所示,已经通过ssh方式成功推送到gitee仓库了。

7.git tag标签

  • tag标签:给commit id设置别名,方便我们快速查看与使用

#git tag -a "版本号"   -m "描述"     基于当前最新的COMMITID
git tag -a "v1.0" -m "v1.0"
#上传标签
git push origin --tags

8.gitignore文件

  • 上传代码的时候,代码中可能包含临时文件cache .swp 排除
  • 在代码根目录中创建文件.gitignore 写上要排除的内容
[root@devops-gitlab liux-app]# vim .gitignore*.tmp
*.swp
cache/*

9.项目分支管理

  • 主干分支 master: 主要负责管理正在运行的生产环境代码 。永远保持与正在运行的生 产环境完全一致 。
  • 开发分支 develop: 主要负责管理正在开发过程中的代码 。一般情况下应该是最新的 代码。
  • bug 修理分支 hotfix: 要负责管理生产环境下出现的紧急修复的代码 。 从主干分支分 出, 修理完毕并测试上线后, 并回主干分支 。并回后, 视情况可以删除该分支 。
  • 发布版本分支 release: 较大的版本上线前, 会从开发分支中分出发布版本分支, 进行 最后阶段的集成测试 。该版本上线后, 会合并到主干分支 。生产环境运行一段阶段较 稳定后可以视情况删除 。
  • 功能分支 feature: 为了不影响较短周期的开发工作, 一般把中长期开发模块, 会从开 发分支中独立出来 。 开发完成后会合并到开发分支 。

       本章节详细介绍了 Git 版本控制的原理和操作,下一章节将深入讲解 GitLab —— 企业级代码托管与协作平台的核心使用技巧。

    http://www.dtcms.com/a/306237.html

    相关文章:

  • 以rebase 方式merge , git要怎么实现两个分支以rebase 合并
  • LLM gateway
  • Kong API Gateway深度解析:插件系统与微服务架构的技术基石
  • LabVIEW DSC报警Web服务客户端
  • labview控制软件开发
  • 量子图灵机 Quantum Turing Machine, QTM
  • Spring Boot音乐服务器项目-查询喜欢的音乐模块
  • Java Ai While 和Do While 循环 day (08)
  • Radash: 新一代前端工具库取代替换Lodash库
  • 【开发技术】.Net中配置Serilog日志分级记录
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘dash’问题
  • Python爬虫实战:研究python-readability库相关技术构建网页内容提取系统
  • sqli-labs:Less-6关卡详细解析
  • nodejs项目中常用的npm包及分类
  • 个人如何做股指期货?
  • 高职工业数据采集与边缘服务应用实训室解决方案
  • npm run dev 启动项目 报Error: listen EACCES: permission denied 0.0.0.0:80 解决方法
  • NPM组件 @0xme5war/apicli 等窃取主机敏感信息
  • vue create 项目名 和 npm init vue@latest 创建vue项目的不同
  • Vue2-封装一个看起来像左右分布表格的表单组件
  • python基础:用户输入和 while 循环
  • 学习日志22 python
  • 2024 年 NOI 最后一题题解
  • 从0到1学PHP(八):PHP 与 MySQL 数据库:数据持久化存储
  • Spring AI 海运管理应用第2部分
  • 关于市场成交量和散户操作错误率的提问和思考。
  • QT笔记(2)——vscode + CMAKE + qtcreate的操作方式
  • 【PostgreSQL内核学习:WindowAgg 帧优化与节点去重】
  • 【Unity3D实例-功能-移动】复杂移动(Blend Tree方式)
  • 169-Django二手交易校园购物系统开发分享