DevOps: Development 和 Operations 的组合
可以把 DevOps 看作开发(软件工程)、技术运营和质量保障(QA)三者的交集
减少变更范围
加强发布协调
自动化
更小、更频繁的变更──意味着更少的风险
让开发人员更多地控制生产环境
更多地以应用程序为中心来理解基础设施
定义简洁明了的流程
尽可能地自动化
促成开发与运营的协作
控制:
Git是一个版本控制软件,主要用于解决在多人合作开发过程中因频繁的版本迭代和代码修改导致的管理混乱问题。它允许开发者轻松地追踪和管理代码的变化,确保每个更改都有明确的记录。与传统的版本管理方式相比,Git提供了更高效和灵活的管理手段,使得团队成员可以并行工作,而不会相互干扰。此外,Git还支持代码还原和版本回溯,使得开发者能够轻松地切换到之前的版本,大大提高了开发效率和代码质量。
远程仓库在Git版本控制系统中扮演着关键角色。Git是一个分布式的版本管理系统,每个终端都有自己的Git仓库。但当涉及到团队协作时,需要一个中心点来同步各个仓库的更改。这就是远程仓库的作用,它不仅存储代码,还提供了一系列的管理功能。公共的Git服务器,如Github、Gitlab和码云Gitee,都可以作为远程仓库。此外,企业或团队也可以选择搭建自己的私有Git服务器,如开源的Gitlab和Gitea。
Git主要用于代码管理。在计算机专业学生或程序员的工作中,经常需要处理多个文件夹和文件,这可能导致混乱。例如,学生可能希望保存之前编写的代码,因为它们在未来可能会有用。但更常见的问题是,他们可能不清楚各个文件夹中进行了哪些修改。这时,Git就派上了用场,它可以帮助用户管理代码的版本,确保每个更改都被妥善记录和跟踪。
持续集成是软件开发和发布流程中的关键环节。它通过单元测试、自动化测试和自动构建发布,确保代码质量,并能够及时发现和修正Bug。Git与构建工具如Jenkins结合,通过钩子(Hook)可以构建一个持续集成环境,进一步优化开发流程。
代码评审是软件开发流程中不可或缺的一环,它为项目的顺利进行提供了有效的保障。在Github这样的平台上,Pull Request就是代码评审的一种常见方式。通过Pull Request,团队成员可以提交自己的代码更改,并请求其他团队成员进行审查。这样不仅可以确保代码的质量,还能促进团队成员之间的交流和合作。然而,如何高效地进行代码评审是一个值得探讨的问题。
文件的添加和提交是Git版本控制中的核心操作。当在文件夹中创建新文件如"today.txt"并想将其纳入版本控制时,首先需要使用"git add"命令将其添加到暂存区。具体地,可以使用"git add -A"来添加所有未追踪的文件。添加后,通过"git status"可以确认文件已成功加入暂存区,并准备进行提交。最后,使用"git commit -m '提交信息'"将文件提交到Git仓库中。这样,文件的变动历史就被永久记录下来,方便后续的版本追踪和回溯。
git:分布式版本控制系统,是当前最流行的版本控制软件。
林纳斯.拖瓦兹
公开的代码仓库:
github.com 国外
gitee.com 国内--码云
版本控制系统分类:
集中式:代码集中存储在中央服务器,开发者的客户端只有部分自己的代码,假如中央服 务器出问题,会出现数据丢失。
传统的版本控制系统:CVS SVN
分布式:每台服务器都拥有所有代码,任意一台服务器崩溃,从其他服务器复制过来就好。

git
实验环境:
关闭防火墙和selinux

git-server:
修改主机名
hostnamectl set-hostname git
bash
git-client
修改主机名
hostnamectl set-hostname client
bash
git-server
- 使用yum安装:
[root@node13 ~]# rm -rf /var/run/yum.pid
[root@node13 ~]# yum -y install --downloadonly --downloaddir=/git git

- 进入git目录,查看是否有git软件包并安装
[root@node13 ~]# cd /git/
[root@node13 git]# ls

[root@node13 git]# yum -y localinstall *.rpm

- 声明自己的名字和邮箱
[root@node13 git]# git config --global user.name "whh"
[root@node13 git]# git config --global user.email 1614666309@qq.com

- 创建版本库目录
[root@node13 ~]# mkdir /data
[root@node13 ~]# cd /data/
[root@node13 data]# ls -a

-a:列出所有文件,包括隐藏文件
- 初始化当前目录为版本库(自动生成.git目录)
[root@node13 data]# git init

- 进入版本库的目录并查看
[root@node13 data]# cd .git/
[root@node13 .git]# ls

branches 分支目录
config 定义目录特有的配置选项
description 仅供git web 使用
HEAD 指定当前的分支
hooks git 钩子文件
info 包含一个全局排除文件(exclude)
objects 存放所有的数据内容
refs 指针文件
index 暂存区文件
- 上传代码步骤
创建文件,模拟代码
[root@node13 .git]# vim readme.txt
添加:
111111111

- 上传到暂缓区
[root@node13 .git]# git add readme.txt //单个文件上传
[root@node13 .git]# git add . //当前目录所有文件上传

上传失败出现以上内容,需要初始化当前目录为版本库,再上传
[root@node13 .git]# git init
[root@node13 .git]# git add readme.txt

[root@node13 .git]# git status //查看暂缓区

[root@node13 .git]# git rm --cached readme.txt //把文件从暂缓区撤销
[root@node13 .git]# git checkout -- readme.txt //已经提交到暂存区,之后再修改内容出错,想回到上次暂 存区版本
- 上传到版本库
[root@node13 .git]# git commit -m "add readme.txt v1”

- 修改readme.txt内容
[root@node13 .git]# vim readme.txt
添加:
111111111
222222222

- 使用diff命令查看异同
[root@node13 .git]# git diff readme.txt

如果想要提交:git add ... ; git commit ...
- 查看版本状态,比对工作区和版本库的异同
[root@node13 .git]# git status

- 查看历史记录
[root@node13 .git]# git log //显示详细信息

[root@node13 .git]# git log --oneline //显示摘要信息

- 版本回滚
将readme.txt文件,上传到暂存区和版本库
[root@node13 .git]# git add readme.txt
- 上传到版本库
[root@node13 .git]# git commit -m "add readme.txt v2"
- 查看当前版本库
[root@node13 .git]# git log

- 再次修改readme.txt文件
[root@node13 .git]# vim readme.txt
添加:
111111111
222222222
333333333

- 上传到暂存区
[root@node13 .git]# git add readme.txt
- 上传到版本库
[root@node13 .git]# git commit -m "add readme.txt v3"

- 查看当前版本库
[root@node13 .git]# git log

- 查看当前在哪个版本库
[root@node13 .git]# git log --oneline

当前哪个版本库在最上边,就是处于哪个版本库
- 回滚到上个版本
[root@node13 .git]# git reset --hard HEAD^

- 再查看当前处于哪个版本库
[root@node13 .git]# git log --oneline

- 切换到v1版本库
[root@node13 .git]# git reset --hard cd3a257
cd3a257:v1版本库的版本号

- 切换到v3版本库
[root@node13 .git]# git reset --hard fba429c

- 回滚到v1版本库
[root@node13 .git]# git reset --hard HEAD^^

- 切换到v2版本库
[root@node13 .git]# git reset --hard 87c86fa
- 修改readme.txt文件
[root@node13 .git]# vim readme.txt
添加:
111111111
222222222
333333333

- 上传到暂存区
[root@node13 .git]# git add readme.txt
- 上传到版本库
[root@node13 .git]# git commit -m "add readme.txt v4"

- 查看当前版本库
[root@node13 .git]# git log
在v2版本库基础上修改的readme.txt文件,并上传到暂存区和版本库,之前v3版本库的内容会被新内容覆盖

- 查看回滚的命令日志
[root@node13 .git]# git reflog

- git config 常用配置选项
git config -e 编辑配置文件
git config --local -e 编辑仓库级别配置文件
git config --global -e 编辑用户级别配置文件
git config --system -e 编辑系统级别配置文件
git config 添加配置项目
git config --global user.email “you@example.com”
git config --global user.name “Your Name”
git config 添加别名
git config --global -e
添加:
[alias]
st = status
co = checkout
br = branch
mg = merge
ci = commit
md = commit --amend
dt = difftool
mt = mergetool
last = log -1 HEAD
cf = config
line = log --oneline
分支
区别于主代码库,创建出来用于新增功能或模块的分支库,仅用户自己有权访问, 修改后合并,一般用于更新版本或添加补丁。
- 查看分支
[root@node13 .git]# git branch

- 创建分支
[root@node13 .git]# git branch yun71
- 查看当前处于哪个分支
[root@node13 .git]# git branch

*:代表当前处于哪个分支
- 切换分支
[root@node13 .git]# git checkout yun71

- 创建并切换到新的分支
[root@node13 .git]# git checkout -b backp

- 切换到v1版本库
[root@node13 .git]# git reset --hard HEAD^^

- 在backup分支,修改readme.txt文件,增加一行
[root@node13 .git]# vim readme.txt
添加:
111111111
222222222
- 上传到暂存区
[root@node13 .git]# git add readme.txt
- 上传到版本库
[root@node13 .git]# git commit -m "add readme.txt v5 backup"

- 切换到主分支
[root@node13 .git]# git checkout master

- 查看readme.txt文件内容
[root@node13 .git]# cat readme.txt

- 将master分支与backup分支合并
[root@node13 .git]# git merge backup

- 查看readme.txt文件
[root@node13 .git]# cat readme.txt

- 删除分支
[root@node13 .git]# git branch -D backp

- 分支合并冲突
制造冲突:先在分支修改文件,提交;然后回到 master,再修改文件相应内容,提交;最 后,合并分支,出现冲突。
删除冲突文件内容:带>>>>>>>>> ================= 行,保留想要的内 容,再 commit 注:为了避免合并冲突,尽量不要在 master 分支修改代码
- backup分支修改文件
[root@node13 .git]# git checkout backup
[root@node13 .git]# vim readme.txt
添加:
111111111
222222222
333333333
- 上传到暂存区
[root@node13 .git]# git add readme.txt
- 上传到版本库
[root@node13 .git]# git commit -m "add readme.txt v7 backup"

- 切换到master分支
[root@node13 .git]# git checkout master
- 修改readme.txt文件
添加:
111111111
222222222
444444444
- 上传到暂存区
[root@node13 .git]# git add readme.txt
- 上传到版本库
[root@node13 .git]# git commit -m "add readme.txt v8 master"

- 查看readme.txt文件内容
[root@node13 .git]# cat readme.txt

- 合并分支
[root@node13 .git]# git merge backup

- 查看readme.txt文件内容
[root@node13 .git]# cat readme.txt

- 删除不需要的
[root@node13 .git]# vim readme.txt

将文件中>和=这两行删除
- 将readme.txt文件上传到暂存区
[root@node13 .git]# git add readme.txt
- 上传到版本库
[root@node13 .git]# git commit -m "add readme.txt v8 master"
- 切换到backup分支
[root@git .git]# git checkout backup
- 查看readme.txt文件
[root@git .git]# cat readme.txt

master主分支可以将所有次分支的文件内容合并到主分支,次分支不能将主分支上文件内容合并到次分支的文件
gitlab
Gitlab 是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的 Git 项目仓库,可通过
官方网站:The most-comprehensive AI-powered DevSecOps platform | GitLab
gitlab就是做一台服务器,其他人往里面传东西,只允许传次分支,只有管理员有权合并主分支
- 安装前提软件
[root@git .git]# yum install curl policycoreutils openssh-server openssh-clients postfix -y

- 复制rpm包到虚拟机,使用rpm安装
![]()
[root@git .git]# rpm -ivh gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm

- 修改配置文件,指定ip地址
[root@git .git]# vim /etc/gitlab/gitlab.rb //rb是ruby语言
修改13行
external_url:对外访问的url路径

- 配置启动gitlab
[root@git .git]# gitlab-ctl reconfigure
需要等待

- 查看状态
[root@git .git]# gitlab-ctl status

- gitlab服务管理命令(开启/关闭/重启)
[root@git .git]# gitlab-ctl start/stop/restart

- 浏览器登录gitlab
管理员:root
密码:初始配置新密码,最少8为 123.com123




- 取消注册功能
登录gitlab--admin area(顶部菜单栏小扳手图标)--左侧面板settings--Sign-up Restrictions--去除勾选sign-up enabled


- 修改登录欢迎界面
登录gitlab--admin area--Appearance--填写管理员联系方式和logo--save



- 项目创建流程
- 创建group
登录gitlab—admin area—new group







- 创建用户
登录gitlab--admin area--new user--添加用户名、邮箱--create--edit--修改密码





- 登录gitlab--admin area--new project--注意选择组



- gitlab用户在组中有五种权限
Guest:可以创建issue、发表评论,不能读写版本库
Reporter:可以克隆代码,不能提交,测试、产品经理可以赋予这个权限
Developer:可以克隆代码、开发、提交、push,开发人员可以赋予这个权限
Master:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心RD负责人可以赋予这个权限
Owner:可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员,开发组leader可以赋予这个权限
- 上传ssh-key
本地用户创建秘钥:ssh-keygen -t rsa
[root@node13 git]# ssh-keygen -t rsa

查看并复制公钥内容:
[root@node13 git]# cat /root/.ssh/id_rsa.pub

粘贴到web界面:右上角——用户——settings——SSH Keys



使用用户whh登录



再次使用用户whh登录


- 在git-client上,创建密钥对
[root@client ~]# ssh-keygen -t rsa

将ssh密钥复制到web下
[root@client ~]# cat /root/.ssh/id_rsa.pub

使用root用户登录






常用指令语法:
Command line instructions
Git global setup
git config --global user.name "user1"
git config --global user.email "user1@qq.com"
Create a new repository
git clone git@192.168.8.207:dev/web.git
cd web
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
Existing folder
cd existing_folder
git init
git remote add origin git@192.168.8.207:dev/web.git
git add .
git commit -m "Initial commit"
git push -u origin master
Existing Git repository
cd existing_repo
git remote rename origin old-origin
git remote add origin git@192.168.8.207:dev/web.git
git push -u origin --all
是在本地没有版本库的时候,从远程服务器克隆整个版本库到本地(即将远程库整个下载到本地),是一个本地从无到有的过程。
在本地有版本库的情况下,从远程库获取最新commit 数据(如果有的话),并merge(合并)到本地。
- 克隆下载项目
以管理员root登录






服务器上克隆
[root@node13 git]# git clone git@192.168.8.5:yun71/web.git

[root@node13 git]# cd web/
[root@node13 web]# ls
[root@node13 web]# cat README.md

- 修改文件内容,再推送上传代码(使用管理员身份)
[root@node13 web]# echo 123456 >new.txt
[root@node13 web]# git add .
[root@node13 web]# git commit -m "add new.txt"

[root@node13 web]# git push -u origin master


- 在客户机git-client,普通开发人员更新代码流程
注意:如果不能执行git命令,则需要安装git
- 上传ssh密钥(上边已经做过)
本地用户创建秘钥:ssh-keygen -t rsa
复制公钥内容:cat /root/.ssh/id_rsa.pub
dev01登录:右上角--用户--settings--SSH Keys
- 关联远程仓库
[root@client ~]# mkdir /data
[root@client ~]# git init
[root@client ~]# cd /data/
[root@client data]# git init
[root@client data]# git remote add origin git@192.168.8.5:yun71/web.git
上传失败的话再次进行初始化操作

- 下载同步代码
[root@client data]# git pull origin master

- 创建分支,修改代码
[root@client data]# git config --global user.email "root@qq.com"
[root@client data]# git config --global user.name "root"
[root@client data]# git checkout -b backup

[root@client data]# echo 6666 >new111.txt
[root@client data]# git add .
[root@client data]# git commit -m "add new111.txt"

- 推送yun71分支(普通用户无权推送master)
[root@client data]# git push -u origin backup

- 使用普通用户whh在web界面创建merge





- 切换到管理员登录,进入项目,同意merge请求(只有root可以合并)

- 常用的git命令
git remote add [remote] [url] #添加(关联)远程库
git remote set-url [remote] [url] #修改远程仓库
git remote –v #查看远程仓库详细信息以及名称对应URL
git push -u remote master #第一次推送master分支的所有内容
git fetch remote [branch/tag] #下载远程仓库的所有变动
git pull remote [branch/tag] #拉取主分支最新版本(可以拉取其他分支)
git push remote [branch/tag] --force #强行推送当前分支至远程分支,及时冲突
git push remote [branch/tag] --all #推送所有分支到远程仓库
git remote rename [oldname] [newname] #修改远程仓库名称
git remote remove [name] #删除远程仓库名称以及URL地址
1、git clone 与 git pull 相同点
是在本地没有版本库的时候,从远程服务器克隆整个版本库到本地,是一个本地从无到有的过程。
在本地有版本库的情况下,从远程库获取最新commit 数据(如果有的话),并merge(合并)到本地。
git pull = git fetch + git merge
通常情况下,远程操作的第一步,是使用git clone从远程主机克隆一个版本库到本地。
本地修改代码后,每次从本地仓库push到远程仓库之前都要先进行git pull操作,保证push到远程仓库时没有版本冲突。
git config --global user.name "Administrator"
git config --global user.email "admin@example.com"
git clone http://192.168.8.5/dev/web.git
git remote add origin http://192.168.8.8/dev/web.git
git commit -m "Initial commit"
git remote rename origin old-origin
git remote add origin http://192.168.8.5/dev/web.git
227

被折叠的 条评论
为什么被折叠?



