版本控制系统git:一文了解git,以及它在生活中的应用,网站维护git代码,图导,自动化部署代码
目录
1.Git是什么
2.git在生活中的应用
2.1git自动化部署代码
3.网站维护git代码
3.1如何在Git代码托管平台等上创建一个仓库
3.2相关文章
4.ruby实现基础git
4.1.Git add
4.2 Git commit
4.3 Git log
1.Git是什么
Git是一个版本控制系统,它可以追踪文件的变化,方便多人协作开发和管理项目的各个版本。Git能够记录每个文件的修改历史、版本号以及贡献者等信息,并能够支持分支和合并的操作,方便开发人员进行并行开发和测试。Git的应用范围非常广泛,包括软件开发、文档编写、网站维护等领域。
2.git在生活中的应用
项目管理:Git 可以帮助团队协作开发,管理项目的版本控制。每个成员都可以在自己的分支上开发,然后合并到主分支上。
文档管理:Git 可以用来管理文本文件,如技术文档、日记等。可以在多台设备上同步文档,保证每个设备上的文档都是最新的版本。
博客管理:很多博客平台支持使用 Git 来管理博客。可以将博客源代码存储在 Git 上,然后通过博客平台自动化部署工具自动发布博客。
思维导图管理:Git 可以管理思维导图,让用户在多个设备上同步笔记,并且可以撤销更改,查看版本历史记录。
个人代码管理:Git 可以在本地存储代码,让用户在多台设备上同步代码,也可以在云端创建公共代码库,与其他人分享代码。
自动化部署:Git 可以集成到自动化部署工作流中,来协助项目发布。当项目代码 push 到 Git 仓库中时,自动触发自动化部署工具,将代码部署到目标服务器。
2.1git自动化部署代码
Git自动化部署代码可以通过各种工具来实现,常用的工具包括Jenkins、Travis CI、GitLab CI等。以下是一个基本的Git自动化部署代码的流程:
在Git仓库中创建分支:将主分支命名为master,将用于部署的分支命名为deploy。
使用Git钩子:将Git钩子与脚本结合使用以实现自动化部署。在代码提交时,触发pre-commit钩子,运行检查和测试,确保代码可以成功部署。
使用CI/CD工具:在代码被推送到deploy分支之前,使用CI/CD工具(如Jenkins、Travis CI、GitLab CI等)自动构建、测试和部署代码。
集成第三方服务:根据需要,可以将自动化部署与第三方服务集成,例如通知服务(如Slack、HipChat等)或监控服务(如New Relic、Sentry等)。
监控和日志记录:确保实时监控代码运行状态,并记录关键事件和错误日志,以便快速定位问题并进行调试。
Git自动化部署的关键是使用CI/CD工具来自动构建、测试和部署代码,并使用监控和日志记录工具来确保代码在运行时的稳定性和可靠性。
3.网站维护git代码
网站维护通常会使用Git代码托管工具来管理网站的源代码和版本控制。具体步骤如下:
在Git代码托管平台(如Github、Gitlab等)上创建一个仓库。
将网站的代码上传到仓库中。
将网站的域名和服务器相关的设置存储在仓库中。
在本地电脑上克隆仓库代码,并进行修改和更新。
提交修改后的代码到仓库中,并确保代码的正确性和稳定性。
配置自动化持续集成和交付流程,确保每次提交的代码都经过测试和验证后才能发布到线上环境。
定期备份代码和相关设置,以防止意外数据丢失和损坏。
通过Git代码托管工具,网站管理员可以更方便地追踪和管理网站的代码和版本。同时也提高了网站的安全性和可靠性,降低了出错和失误的可能。
3.1如何在Git代码托管平台等上创建一个仓库
在大多数Git代码托管平台上创建仓库的步骤非常类似,以下是一般步骤:
登录到你的账户。
打开仓库创建页面。该页面通常被称为“New Repository”、“Create Repository”或类似名称。
填写仓库信息。在创建页面上,你需要提供仓库的名称、描述、访问权限(公开或私有)等信息。
选择初始化选项。你可以选择从头开始创建一个新的仓库,或者将其克隆自现有仓库。如果你是一个新手,请选择从头开始创建。
点击创建按钮。现在你的仓库已经创建完成,并且你可以通过Git来进行代码版本控制。
请注意,在不同的Git代码托管平台上,上述步骤可能略有不同。但是,一般来说,创建一个Git仓库的过程应该非常简单且容易上手。
3.2相关文章
git创建仓库教程https://www.baidu.com/link?url=JLVQNviFOZny_AkCSwq97jbE7tVZEccSBZwxiTug38pQNm0ljymd4PVyP7A2FzuhI9nIwXEAoQciEbqETYk4JK&wd=&eqid=e7bf15660016981b00000005650d77d9源代码库托管
http://www.baidu.com/baidu.php?url=K00000K3Zd4fCW_uEhViskw-eRI9nAbRMP2HSdoWjC9kDOawSNrleqej0EO0OlUsKy0ARneAOAAEHpyfPKozoXYGoFXpBaVGFjukQiUGFIFyfWs-5OXEBZSzZa-DR4VIxReRWIiZfGplThzw8-zryXULOVIt_HUeZJQp0rj7PJeq1Cqs7iaSly38bcCWNyP7ZB59_8XKBCgaoO2wRBp6T856uOtB.DY_NR2Ar5Od663rj6tCloCebfmY1pLHfG6JHwxYRD_lp_7tALMKLW89Cq8FWvOozIPXeFZg8qMHg8zTEVd2pMpRt85R_nYQAlEF8v20.U1Yk0ZDqzrXl1VHpwv-YV5oaltLf8I1AETzCVTWF1eiYEpWi8eWv_VpO36Kspynqn0KsTv-MUWYLmyF9nHRvP1f4P1TYuHbsPj61uWPWrANWnWF9rHDknsKY5yIGInLf8Is0pyYqnHfvnfKM5yq-TZnk0ZNG5yF9pywd0ZKGujY1n6KWpyfqnWT30AdY5HDsnHIxn1Dzn7tznjmzg1csPH7xnH0krNt1PW0k0AVG5H00TMfqPHfz0AFG5HDdr7tznjwxPH010AdW5HDsnHIxnH0zg1D4nHT4njTYn1b3g1csPH7xnH0krNts0Z7spyfqn0Kkmv-b5H00ThIYmyTqn0K9mWYsg100ugFM5H00TZ0qnHc3nWTznWDvr0K8IM0qna3snj0snj0sn0KVIZ0qn0KbuAqs5H00ThCqn0KbugmqTAn0uMfqn0KspjYs0Aq15H00mMTqnH00UMfqn0K1XWY0mgPxpywW5gK1Qy4J0A-bm1dri6KspZw45fKYmgFMugfqn17xn1Dkg1Dz0ZwdT1YYPWDYrHR4PWb1rjmkP1bsPjRz0ZF-TgfqnHm4PHn3nHfvPHbLPsK1pyfquHIBuWDdPWmsnjDvrH6km6KWTvYqPjRvnDcLPbn4wbwAPjIKr0K9m1Yk0ZK85H00TydY5H00Tyd15H00XMfqn0KVmdqhThqV5HKxn7tsg1Kxn7ts0Aw9UMNBuNqsUA78pyw15HKxPWm1nWmLndtsg1Kxn7ts0ZK9I7qhUA7M5H00uAPGujYs0ANYpyfqQHD0mgPsmvnqn0KdTA-8mvnqn0KkUymqn0KhmLNY5H00pgPWUjYs0A7buhk9u1Yk0Akhm1Ys0AwWmvfqwR7AnDmvPHc1PYN7rjPAwWb4fW6YfWDkwj6sn1cznRPKwWbLPjcsPsKYTh7buHYLPH0znjn0mhwGujYsnWFKfRDsf16kPj7DwjmkPHn3Pj-7n1fsnHmznj0kP0KEm1Yk0AFY5H00Uv7YI1Ys0AqY5H00ULFsIjYsc10Wc10Wnansc108nj0snj0sc10WwDuRc10WQinsQW0snj0snankQW0snj0snansc10Wna3snj0snj0Wnansc100mh78pv7Wm1Ysc10Wnans0Z91IZRqnH6sPjbzPH60TNqv5H08n1Pxna3sn7tsQW0sg108nH-xna3sn7tsg108njKxn0KBTdqsThqbpyfqn0KzUv-hUA7M5H00mLmq0A-1gvPsmHYs0APs5H00ugPY5H00mLFW5HnsP101&us=newvui&xst=TjYknW6zP1cznHm30ynqwR7AnDmvPHc1PYN7rjPAwWb4fW6YfWDkwj6sn1cznRPKwWbLPjcsPs7B5H0znb7KfHKjrjDYnRwDPWDdn16YrRR1Pj0kPWcsnjDY0gnqnHmvrHbsrjbYP1DkPjRYnHmLn17xnHfvnNts0gTquv-Y1Ia4L07k5TWM8_eRvhIGIQHls8EPYQMTkoLnJQgczTSYVQvCYo83qoQyEScKIHYkrj0YrHcdr07Y5HDvrHR1rjDYPWmKUgDqn0cs0BYKmv6quhPxTAnKUZRqn07WUWdBmy-bIy9EUyNxTATKTMfqn0DknHR1PW0LPjnL&cegduid=nH6sPjbzPH6&solutionId=19906023&word=&ck=5745.10.118.318.282.479.466.1506&shh=www.baidu.com&sht=baiduhome_pg&wd=
4.ruby实现基础git
Git是一种分布式版本控制系统,它可以追踪代码的修改、版本控制、协同开发等。在此,我将向您介绍如何使用Ruby实现基础的Git。
首先,我们需要创建一个Git仓库。一个Git仓库是具有特定结构的文件夹。我们可以在Ruby中使用以下命令来创建Git仓库:
Dir.mkdir('my_repo')
Dir.chdir('my_repo')
Dir.mkdir('objects')
Dir.mkdir('refs')
Dir.mkdir('refs/heads')
在创建Git仓库后,我们需要使用以下命令来初始化Git仓库:
require 'digest/sha1'
require 'fileutils'def initDir.mkdir('.git')Dir.chdir('.git')Dir.mkdir('objects')Dir.mkdir('refs')Dir.mkdir('refs/heads')File.open('HEAD', 'w') { |file| file.write("ref: refs/heads/master\n") }
end
创建Git仓库后,我们需要实现基本的Git命令。
以下是一些基本的Git命令的Ruby实现:
4.1.Git add
def add(file)object = File.read(file)sha1 = Digest::SHA1.hexdigest(object)path = '.git/objects/' + sha1[0, 2]name = sha1[2, 38]dir = Dir.mkdir(path) unless Dir.exist?(path)file = File.open("#{path}/#{name}", 'w') { |f| f.write(object) }puts "Added #{file} to index"
end
该方法将文件添加到Git索引中,它读取文件,计算SHA1哈希,并将文件存储在.git/objects
目录中。
4.2 Git commit
def commit(message)tree = Dir.entries('.').sort.join("\n")sha1 = Digest::SHA1.hexdigest(tree)path = '.git/objects/' + sha1[0, 2]name = sha1[2, 38]dir = Dir.mkdir(path) unless Dir.exist?(path)file = File.open("#{path}/#{name}", 'w') { |f| f.write(tree) }commit = "tree #{sha1}\n\n#{message}"sha1 = Digest::SHA1.hexdigest(commit)path = '.git/objects/' + sha1[0, 2]name = sha1[2, 38]dir = Dir.mkdir(path) unless Dir.exist?(path)file = File.open("#{path}/#{name}", 'w') { |f| f.write(commit) }File.open('.git/refs/heads/master', 'w') { |f| f.write("#{sha1}\n") }puts "Committed: #{message}"
end
该方法将当前目录中的文件创建一个树,计算SHA1哈希并将其存储在.git/objects
目录中。然后,创建一个新的提交对象,包含树的哈希值和提交消息。最后,将提交哈希值写入refs/heads/master
文件。
4.3 Git log
def loghead = File.read('.git/HEAD').chomp.split(' ')[1]commit = headwhile commit != ''commit_data = File.binread(".git/objects/#{commit[0, 2]}/#{commit[2, 38]}")tree = commit_data[/^tree (.+)$/, 1]message = commit_data.split("\n\n")[1]puts "commit #{commit}"puts "Author: #{ENV['USER']} <#{ENV['EMAIL']}>"puts "Date: #{Time.now}"putsputs " #{message}"putsparent = commit_data[/^parent (.+)$/, 1]commit = parentend
end
该方法通过读取HEAD
文件中的提交哈希值,并遍历所有父提交,从.git/objects
目录中读取提交数据,并输出提交哈希值、作者、日期和提交消息。
这只是基本的Git命令的实现,尚有许多其他Git命令需要实现。但是,它为您提供了使用Ruby实现基本Git命令的起点。
相关文章:

版本控制系统git:一文了解git,以及它在生活中的应用,网站维护git代码,图导,自动化部署代码
目录 1.Git是什么 2.git在生活中的应用 2.1git自动化部署代码 3.网站维护git代码 3.1如何在Git代码托管平台等上创建一个仓库 3.2相关文章 4.ruby实现基础git 4.1.Git add 4.2 Git commit 4.3 Git log 1.Git是什么 Git是一个版本控制系统,它可以追踪文件的…...

uqrcode+uni-app 微信小程序生成二维码
使用微信小程序需要弹出动态二维码的需求,从插件市场选了一个下载次数较多的组件引入到项目中uqrcode,使用步骤如下: 1、从插件市场下载 插件地址:https://ext.dcloud.net.cn/plugin?id1287,若你是跟我一样是用uni-…...

从零开始的 MyBatis 拦截器之旅:实战经验分享
文章目录 MyBatis拦截器可以做什么?Mybatis核心对象介绍四大核心对象如何实现?接口讲解Interceptor接口intercept方法plugin方法setProperties 完整SQL打印拦截器实战拦截器实现拦截器注册 MyBatis拦截器可以做什么? MyBatis拦截器是MyBatis…...

网络编程day05(IO多路复用)
今日任务: TCP多路复用的客户端、服务端: 服务端代码: #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> #include <netinet/in.h> #include <unistd.h> …...

人声分离网站,帮你快速提取视频中的人声和背景音乐
今天给大家带来一个可以分离人声的网站——音分轨,他运用人工智能算法可以将音频中的人声部分和音乐部分分离,使我们的视频制作过程可以更方便。 我们点击右下角“选择文件”上传一个音频,上传好音频后,人工智能就开始处理我们上传…...

计算机网络常见问题
1.谈一谈对OSI七层模型和TCP/IP四层模型的理解? 1.1.为什么要分层? 在计算机中网络是个复杂的系统,不同的网络与网络之间由于协议,设备,软件等各种原因在协调和通讯时容易产生各种各样的问题。例如:各物流…...

上PICO,沉浸式观看亚运直播,参与跨国界游戏竞技
备受瞩目的杭州第19届亚运会,将于9月23日正式开幕。据悉,这也是有史以来项目最多的一届亚运会,除部分传统奥运项目外,还包含武术、藤球、板球、克柔术、柔术等亚洲特色项目,以及霹雳舞、电子竞技等深受年轻人喜爱的新兴…...
无重复字符的最长子串 - 力扣(LeetCode)
3. 无重复字符的最长子串 - 力扣(LeetCode) 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长…...
企业行政许可的种类有哪些?
从行政许可的性质、功能和适用条件的角度来说,大体可以划分为五类:普通许可、特许、认可、核准、登记。 1.普通许可 普通许可是一种允许符合特定条件的相对方行使某种权利的行为。在许多情况下,需要普通许可的活动都与国家安全、公共安全息…...

Flink--4、DateStream API(执行环境、源算子、基本转换算子)
星光下的赶路人star的个人主页 注意力的集中,意象的孤立绝缘,便是美感的态度的最大特点 文章目录 1、DataStream API1.1 执行环境(Execution Environment)1.1.1 创建执行环境 1.2 执行模式(Execution Mode)…...

#循循渐进学51单片机#指针基础与1602液晶的初步认识#not.11
1、把本节课的指针相关内容,反复学习3到5遍,彻底弄懂指针是怎么回事,即使是死记硬背也要记住,等到后边用的时候可以实现顿悟。学会指针,就是突破了C语言的一道壁垒。 2,1602所有的指令功能都应用一遍&#…...

Lua学习笔记:探究package
前言 本篇在讲什么 理解Lua的package 本篇需要什么 对Lua语法有简单认知 对C语法有简单认知 依赖Visual Studio工具 本篇的特色 具有全流程的图文教学 重实践,轻理论,快速上手 提供全流程的源码内容 ★提高阅读体验★ 👉 ♠ 一级…...

【面试经典150 | 双指针】三数之和
文章目录 写在前面Tag题目来源题目解读解题思路方法一:暴力枚举方法二:双指针 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,并附带一些对…...
现代卷积网络实战系列3:PyTorch从零构建AlexNet训练MNIST数据集
1、AlexNet AlexNet提出了一下5点改进: 使用了Dropout,防止过拟合使用Relu作为激活函数,极大提高了特征提取效果使用MaxPooling池化进行特征降维,极大提高了特征提取效果首次使用GPU进行训练使用了LRN局部响应归一化(…...

Django系列:Django应用(app)的创建与配置
Django系列 Django应用(app)的创建与配置 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/article…...
Linux查看程序和动态库依赖的动态库
一. 前言 在一些时候,我们需要知道一个程序或者动态库所依赖的动态库有哪些。比如,当我们运行一个程序的时候,发现可能会报错,提示找不到某个符号,这时我们就需要知道程序依赖了什么库,从而添加对应需要的动…...
vue3 无法使用pnpm安装依赖 或 Cannot find module preinstall.js
创建.npmrc文件在根目录 shamefully-hoisttrue auto-install-peerstrue strict-peer-dependenciesfalse删除 node_modules 和 pnpm-lock.yaml 文件 重新 pnpm i 就可以啦...

C/C++连接数据库,包含完整代码。
C/C连接数据库 本篇文章意在简洁明了的在linux环境下使用C/C连接远程数据库,并对数据库进行增删查改等操作。我所使用的环境是centos7,不要环境除环境配置外,代码是大同小异的。完整代码在最底部!!! 1.前…...

AUTOSAR词典:CAN驱动Mailbox配置技术要点全解析
AUTOSAR词典:CAN驱动Mailbox配置技术要点全解析 前言 首先,请问大家几个小小问题,你清楚: AUTOSAR框架下的CAN驱动关键词定义吗?是不是有些总是傻傻分不清楚呢?CAN驱动Mailbox配置过程中有哪些关键配置参…...

C语言 coding style
头文件 The #define Guard #define的保护文件的唯一性,防止被多重包含 格式 : <PROJECT>_< FILE>_H_ PROJECT : XS FILE : MV_CTR 头文件的包含顺序 C System FilesOther LibrariesUser LibraryConditional include 作用域 局部变量 -变量定义时需要…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...

高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...

力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...
【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验
Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...
学习一下用鸿蒙DevEco Studio HarmonyOS5实现百度地图
在鸿蒙(HarmonyOS5)中集成百度地图,可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API,可以构建跨设备的定位、导航和地图展示功能。 1. 鸿蒙环境准备 开发工具:下载安装 De…...