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

一、核心概念

1.版本控制概念

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

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

2.版本控制类型

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

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

3.两种类型对比

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

4.git架构解析

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

二、git部署及使用

1.部署

bash 复制代码
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初始化配置

bash 复制代码
#配置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基础命令

bash 复制代码
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 分支基本使用
bash 复制代码
#查看分支
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仓库
  • 用户名/密码方式连接仓库
bash 复制代码
#添加远程仓库(用户名密码方式)
cd /app/liux-app
git remote add origin https://gitee.com/liuxing88/liux-app.git
#查看远程仓库
git remote -v
#上传本地仓库的内容 到远程仓库
git push -u origin "master"

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

  • 密钥认证连接远程仓库
bash 复制代码
#先在本地生成密钥对,将公钥拷贝到远程仓库中
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设置别名,方便我们快速查看与使用
bash 复制代码
#git tag -a "版本号"   -m "描述"     基于当前最新的COMMITID
git tag -a "v1.0" -m "v1.0"
#上传标签
git push origin --tags

8.gitignore文件

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

*.tmp
*.swp
cache/*

9.项目分支管理

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

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

相关推荐
兰德里的折磨5507 小时前
使用git提交时出现了报错,新手不会的可以参考一下。
git
JavaDog程序狗9 小时前
【教程】以程序员张三的故事,沉浸式详解Git常用命令
git
白衣鸽子11 小时前
Git Commit Message规范:Angular Convention
git
坐吃山猪15 小时前
GitPython03-项目setup编译
git·python·setup
一念&1 天前
Git 与 GitHub 的对比与使用指南
git·github
我是李武涯2 天前
svn与git Merge重要区别讲解
git·svn
ん贤2 天前
Git分支
git
迷你二鹏2 天前
前端之Git
前端·git
哈里谢顿2 天前
常见 git push 问题及解决方案
git