ci/cd之初识git(代码片段)

Tuki_a Tuki_a     2022-12-10     732

关键词:

Git(傻瓜式内容跟踪器)

Git简介

Git 是一个免费的开源分布式版本控制系统,旨在快速高效地处理从小到大的所有项目。

Git 是一个快速、可扩展、分布式版本控制系统,具有异常丰富的命令集,提供高级操作和对内部的完全访问。

Git易于学习, 占用空间小,性能快如闪电。它优于 Subversion、CVS、Perforce 和 ClearCase 等 SCM 工具,具有便宜的本地分支、方便的暂存区和 多个工作流等功能。

Git必看秘籍:https://git-scm.com/book/zh/v2

Git特点

速度、简单的设计、对非线性开发模式的强力支持(允许成千上万个并行开发的分支)、完全分布式、有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)。

自诞生于 2005 年以来,Git 日臻成熟完善,在高度易用的同时,仍然保留着初期设定的目标。 它的速度飞快,极其适合管理大项目,有着令人难以置信的非线性分支管理系统。

VCS (版本控制系统)介绍

本地版本控制系统:
大多都是采用某种简单的数据库来记录文件的历次更新差异。其中最流行的一种叫做 RCS,现今许多计算机系统上都还看得到它的踪影。 RCS 的工作原理是在硬盘上保存补丁集(补丁是指文件修订前后的变化);通过应用所有的补丁,可以重新计算出各个版本的文件内容。

集中化的版本控制系统(Centralized Version Control Systems,简称 CVCS):
这类系统,诸如 CVS、Subversion 以及 Perforce 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。 多年以来,这已成为版本控制系统的标准做法。
可以让不同系统上的开发者协同工作。

上述两个系统都有一样的缺点:
显而易见的缺点是中央服务器的单点故障。 如果宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。 如果中心数据库所在的磁盘发生损坏,又没有做恰当备份,毫无疑问你将丢失所有数据——包括项目的整个变更历史,只剩下人们在各自机器上保留的单独快照。 本地版本控制系统也存在类似问题,只要整个项目的历史记录被保存在单一位置,就有丢失所有历史更新记录的风险。

分布式版本控制系统:
在这类系统中,像 Git、Mercurial、Bazaar 以及 Darcs 等,客户端并不只提取最新版本的文件快照, 而是把代码仓库完整地镜像下来,包括完整的历史记录。 这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。 因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份

Git项目的三个阶段

Git 有三种状态:已提交(committed)、已修改(modified) 和 已暂存(staged)
已修改表示修改了文件,但还没保存到数据库中。
已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
已提交表示数据已经安全地保存在本地数据库中。

这会让我们的 Git 项目拥有三个阶段:工作区、暂存区以及 Git 目录

Git命令集语法

语法如下:

git [--version] [--help] [-C <路径>] [-c <名称>=<值>]
    [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
    [-p|--paginate|-P|--no-pager] [--no-replace-objects] [--bare]
    [--git-dir=<路径>] [--work-tree=<路径>] [--namespace=<名称>]
    [--super-prefix=<路径>] [--config-env=<名称>=<环境变量>]
    <命令> [<参数>]

更多详细参数用法参考官方文档:https://git-scm.com/docs/git#_git_commands

Git的使用

新手git教程:https://git-scm.com/docs/gittutorial

获取 Git 仓库通常有两种方式:

1、将尚未进行版本控制的本地目录转换为 Git 仓库。
2、从其它服务器克隆 一个已存在的 Git 仓库。比如: git clone

将项目导入Git

创建一个新目录当作是项目目录

mkdir test
cd test

安装Git工具包

进入工作目录进行初始化版本库,查看隐藏文件会发现创建了一个名为“.git”的新目录(.git目录是git跟踪管理版本库的)。

创建一个文件(注意跟踪的都得是文件形式的,不能是二进制程序),查看状态现在是未知状态(-s是简化输出)

告诉 Git 对当前目录下read.md文件的内容进行快照,使用git add。此快照现在存储在 Git 称为“索引”的临时暂存区中。查看状态已变为A(意为本地新增的文件)

使用git commit将索引的内容永久存储在存储库中,使用给定的“add read.md”作为提交消息。我的报错是因为git不知道进行这个操作的人是谁,git需要记录,所以根据提示告诉git自己是谁

执行如下命令告诉git自己是谁,重新提交成功

对文件进行修改,拍快照再提交。可以看到状态的变化,在右边红色的M是跟踪的文件有内容变化,在左边绿色的M是修改已到暂存区待提交。

查看已暂存和未暂存的修改
# git diff

没拍快照前(即没进入工作区之前)撤销更改

以vim的方式添加内容

查看状态

拍快照后作新的修改,状态出现了两个M(即一部分修改在工作区,一部分在暂存区)

提交只提交了在暂存区的一部分,由此可以看出每次修改都是独立的,都需要拍快照提交

提交后撤销更改

设置忽略文件

创建一个隐藏文件和一个隐藏目录,查看状态只有文件的,因为目录里没东西

进入目录创建一个文件,查看状态文件和目录都有

一般情况下,隐藏文件大多是一些临时文件,我们并不需要将其上传保存,所以编辑忽略文件,内容如下

[root@lucky test]# vim .gitignore
.*

这回再查看状态就没有了

版本升级

再作更改提交为版本2

查看日志可以看到操作记录

删除文件+版本回退

删除文件,状态变为D

执行git rm提交到暂存区,状态变为绿色

reset再+checkout可以取消删除操作

重新删除提交后是真的删除了

但是因为我们当时作修改时作为新版本提交了,所以可以回到版本二,那么文件就回来了

ci/cd之搭建私有git仓库gitlab(代码片段)

...tLab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。安装方法是参考GitLab在GitHub上的Wiki页面。Gitlab官方文档:https://docs.gitlab.com/CI/CD持续集成考虑一个应 查看详情

ci/cd之搭建私有git仓库gitlab(代码片段)

...tLab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。安装方法是参考GitLab在GitHub上的Wiki页面。Gitlab官方文档:https://docs.gitlab.com/CI/CD持续集成考虑一个应 查看详情

ci/cd之推送本地仓库到远程git仓库克隆远程git仓库(使用gitee)(代码片段)

克隆远程Git仓库推送本地仓库到远程Git仓库克隆远程仓库到gitee官网(github会很慢,建议用gitee)注册一个账号https://gitee.com/创建一个开源仓库仓库名称随意起有两种连接本地方式,https需要在每次连接的时候输入g... 查看详情

ci/cd之推送本地仓库到远程git仓库克隆远程git仓库(使用gitee)(代码片段)

克隆远程Git仓库推送本地仓库到远程Git仓库克隆远程仓库到gitee官网(github会很慢,建议用gitee)注册一个账号https://gitee.com/创建一个开源仓库仓库名称随意起有两种连接本地方式,https需要在每次连接的时候输入g... 查看详情

ci/cd之jenkins结合ansible部署apache(代码片段)

jenkins结合ansible部署apache演示环境部署步骤安装ansible创建新git项目ansible主控端配置jenkins测试配置用户设置jenkins部署部署测试在测试环境测试在生产环境部署建议演示环境server1 192.168.122.11 gitlab端 4G内存server2 192.168.122.12 j... 查看详情

ci/cd之jenkins结合ansible部署apache(代码片段)

jenkins结合ansible部署apache演示环境部署步骤安装ansible创建新git项目ansible主控端配置ansible主配置文件编写配置清单编写下载apache的playbook修改apache配置文件最终目录结构如下jenkins测试配置用户设置jenkins部署部署测试在测试环境测... 查看详情

ci/cd之jenkins(代码片段)

...线插件安装gitlab插件jenkins和gitlab联动jenkins轮询检查gitlab代码变更使用webhook实时检查gitlab代码变更推送dockerfile文件自动构建镜像新增agent节点jenkins用户管理CI/CD简介CI(Continuousintegration持续集 查看详情

ci/cd之jenkins(代码片段)

...线插件安装gitlab插件jenkins和gitlab联动jenkins轮询检查gitlab代码变更使用webhook实时检查gitlab代码变更推送dockerfile文件自动构建镜像新增agent节点jenkins用户管理CI/CD简介CI(Continuousintegration持续集 查看详情

ci与cd之docker上安装jenkins(代码片段)

...与主干脱离,导致分支与主干可能存在较大偏差,在集成代码的时候可能需要花费数小时更久的时间来修复代码,以便最终将代码集成主干(俗称"集成地狱"或"集成灾难");而CI旨在鼓励团队成员进行频繁集成(例如每小时或至少... 查看详情

ci/cd之jenkins+gitlab(代码片段)

...关插件-安装Jenkins插件-Jenkins升级-配置jenkins使用gitlab更新代码-使用Jenkins创建新项目-将代码发布到web服务器三、实战项目(1)更新gitlab代码触发jenkins自动部署-配置身份验证令牌-在jenkins上配置触发器-在git项目的配置界... 查看详情

纯git实现前端ci/cd(代码片段)

作者:杨成功原文:https://segmentfault.com/a/1190000040904889最近要高效的把前端react项目部署到私有服务器上,研究了好几种持续部署方案,这里简单描述一下。总的部署思路分两种:编译后的文件部署源码部署编... 查看详情

gitlab的ci/cd配置管理(代码片段)

...维系列一:gitlabCI/CD介绍二:配置gitlab的CI/CD的runner三:代码的MAVEN打包环境四:配置gitlab的CI文件五:发布项目一:gitlabCI/CD介绍1.1gitlabCI/CD概述Gitlab是常用的开源git代码管理工具之一,随着发展也推出了ci/cd解决方案.顾名思义... 查看详情

git客户端连接gitlab实现简单的ci/cd(代码片段)

1.git客户端的安装下载:https://git-scm.com/download/win截至最近:20180728最新版本2.18的下载地址https://github-production-release-asset-2e65be.s3.amazonaws.com/23216272/c0b82e3e-7623-11e8-93a5-b72bebbce542?X-Amz-Algorithm=AW 查看详情

ci/cd——构建企业级docker+jenkins+git+harbor流水线自动化持续集成持续发布平台(代码片段)

构建企业级Docker+Jenkins+Git+Harbor流水线自动化持续集成持续发布平台CI/CD是什么?持续集成(CI)/持续交付(CD)的优势自动化部署流程图GitGithubGitlab的区别前言:一些自己想说的话部署Docker+Jenkins+Git+Harbor流水... 查看详情

ci/cd——构建企业级docker+jenkins+git+harbor流水线自动化持续集成持续发布平台(代码片段)

构建企业级Docker+Jenkins+Git+Harbor流水线自动化持续集成持续发布平台CI/CD是什么?持续集成(CI)/持续交付(CD)的优势自动化部署流程图GitGithubGitlab的区别前言:一些自己想说的话部署Docker+Jenkins+Git+Harbor流水... 查看详情

ci/cd系列之阿里云云效2020应用篇(代码片段)

目录前言实战制品仓库maven配置项目pom配置代码管理流水线参考资料前言前不久登录阿里云后台,看到云效的介绍,出于好奇便点进去看了看,刚开始以为云效是类似Jenkins的一套自动化部署方案,了解之后发现云效的野心很大哦... 查看详情

ci与cd之docker上安装jenkins(代码片段)

...与主干脱离,导致分支与主干可能存在较大偏差,在集成代码的时候可能需要花费数小时更久的时间来修复代码,以便最终将代码集成主干(俗称"集成地狱"或"集成灾难");而CI旨在鼓励团队成员进行频繁集成(例如每小时或至少... 查看详情

jenkins与docker的自动化ci/cd实战(代码片段)

...化发布流程。一、发布流程设计工作流程:开发人员提交代码到Git版本仓库;Jenkins人工/定时触发项目构建;Jenkins拉取代码、代码编码、打包镜像、推送到镜像仓库;Jenkins在D 查看详情