分布式版本管理系统---->Git(Linux---centos(保姆式)讲解1)
文章目录:
1:什么是Git以及作用
2.Git的基本操作过程(创建git仓库,配置仓库的配置)
3.git的工作区,暂存区,版本库的关系
4.将文件添加到版本库:git add 与git commit -m命令
5.git log查看日志的引入
6.查看.git文件中的内容
7.修改文件内容查看 git diff 与git diff HEAD
8.版本回退的概念引入以及命令
9.撤销修改的引入与相关指令操作
10.git rm 删除版本库文件
前言:
本文章是讲解Git的相关操作的,深刻理解Git的操作过程与操作,掌握Git企业级的应用,从0开始讲解Git。
文章正式开始:
1:什么是Git 以及作用
首先在讲解什么是Git之前我们先来聊一聊关于我们工作中的一个场景:
我们日常在工作的时候我们的老板可能让我们写一个需求文档(文档1),而当我们写完文档1之后我们可能就将这个文档1交给老板,可是我们的老板对我们的文档1不是怎么很满意觉得我们的文档缺了一点什么,于是让我们将这个文档拿下去进行修改,于是我们就拿着文件去进行修改了,此时我们将文档2给修改出来了,又将这个文档交给老板,老板可能觉得还是对这个文件不是很满意,于是又让我们去修改文档.......,假设最终我们修改到了第10版文档,可是老板觉得我们的第5份文档是最满足他的需求的,于是我们就去寻找文档5,如果我们之前没保存文档5那我们的内心是非常崩溃的,因为我们已经修改文档很多次了并不知道文档5是什么内容了,但是我们如果修改的并不是同一份文件而是每次修改的时候都是新建一个副本文档进行修改,那么我们就开开心心的拿着第5份文档交给老板。
从上面的工作场景不难发现我们修改文件的时候由两种方式一种是在同一份文件进行多次修改,另外一种情况就是对要修改文件的副本文件进行修改,显然第二种情况是比较好的修改方式,因为这种修改方式可以让我们找到我们每次修改文件的版本。
而为了对我们的文件进行管理于是就有了git这个主流的版本管理控制器之一。
所以我们可以将Git简单的理解为:对文件进行管理的版本控制系统,能够帮我们知道这个文件的各个版本以及里面的内容。这里的文件可以是任何格式的文件,而对于开发者来说git最大的作用就是用来管理我们的源代码的。
2:Git的基本操作(centos下的操作)
1:首先在我们的centos系统下我们需要安装Git
命令:
root用户:yum install -y git
普通用户:sudo yum install -y git
创建git仓库
首先要注意的是我们的创建仓库一定是在一个目录下进行创建的
创建一个git仓库:git init
配置仓库
git config user.name "xxxxx" git config user.email "xxxxx"
首先在配置名字和邮箱之前我们可以查看一下git有无配置这两个,如果配置了我们就可以不进行配置,一般而言如果我们是刚开始建立git仓库都需要进行配置。
查看git的配置项指令: git config -l
所以我们来配置name与email
我们还可以加一个 --global的选项来进行配置这两个如:
git config --global user.name " "
git config --global user.email " "
是否加 --global看自己的意愿。
配置项的删除
假设我们的配置项不小心配置错了或者我们需要对一个git仓库的配置项进行修改那么我们就可以使用以下的指令:
git config --unset user.name(user.email) 对于局部配置
git config --global --unset user.name(user.email) 对于全局的配置
3:git的三大区域介绍
其实我们的git真正管理的是位于版本库中的文件,但是在git仓库目录的文件还不能被git进行管理,而需将他添加到git的版本库中才能进行管理。
我们通过上面的图形来介绍几个概念
工作区:.git文件的同级路径下的区域,简单的理解就是我们在写代码的区域。
暂存区:属于.git版本库中一个非常重要的内容,我们将工作区的内容通过add指令之后文件就会被放在该区域。
git的版本库:就是我们的.git目录。
HEAD:本质是一个指针用来指向我们当前是在那个分支下。
master:本质里面存的是commit id
object对象库:当我们对工作区进行修改的时候,我们修改的内容会被存储在object对象库中。
.git文件中就有上述的一些区域。
4.git add 与git commit -m
在上面我们已经对于git的区域有一定的了解了,那么我们也就可以引入两个指令了。
git add . or git add filename
首先这个命令是针对于工作区与暂存区进行的命令。
意义是:将我们工作区修改的内容添加到暂存区。
“修改“:并不是局限于对文件的修改还包括删除和创建文件
git add . 与git add filename的区别
add . :表示将工作区所有的修改添加到暂存区中。
add filename: 将该文件的修改添加到暂存区中。
如我们先使用上述命令来进行相关的操作:
git status
这个指令可以用来查看我们当前三个工作区的状态
git commit -m ” xxxx“ ”“分号里面建议认真的写本次做了什么操作
git status 查看三个区域的状态
5:git log 查看日志的指令
这个指令可以用来查看我们提交到版本库中的日志
还可以使用 简单漂亮的打印指令
git log --pretty=oneline
6. .git文件里面的内容介绍
.git其实是树目录里面有许多文件或目录,我们在linux下使用tree命令来查看
index:也就是我们所说的暂存区,里面存着的是add 修改的内容
HEAD:也就是我们所说的指针,里面存着的是我们指向的分支
object:称为对象库,里面存着的是我们我们每次对工作区进行修改的内容的索引
master:其实就是我们最新一次的commit id,我们可以来看看。
7.修改内容的查看
我们知道git是版本控制管理系统,所以git最重要管理的是修改并非是文件。
我们先引入几个场景
1.只是修改了文件的内容,无add。
这种情况下我们git如果想要知道本次文件的内容与上次该文件内容的差异我们呢一个如何进行查看呢??
当然这种差异我们可能可以通过我们的记忆知道两个文件的区别,可是当我们时间一久那我们还会记住吗??
所以我们的git提供了一个指令用来显示工作区与暂存区的区别
git diff filename
我们通过图片来进行演示。
场景2:修改的文件已经add了,想要查看文件在暂存区与版本库中的差别
git diff HEAD -- filename
此时暂存区与版本库的差异就出来了。
8.版本回退
我们知道我们的git有一个重要的功能就是对文件进行版本管理,所以版本回退是git的一个非常重要的知识。
版本回退经常用于,我们假如已经开发了一段时间了,可是我们对我们的开发结果不是怎么很想要了,并且想要在上一个版本下重新进行开发,那么这时我们的版本回退的操作就非常需要了。
版本回退语法:git reset [--soft] [--mixed] [--hard] commitid [HEAD]
commitid:就是我们用git log打印时commit 后面的那些数字,当然commitid 也可以是HEAD,表示的是当前版本。
回退的本质:将版本库的内容进行回退,其他区域回不回退需要看选项回退。
我们结合图来进行解释具体的选项的意思。
--soft:只回退版本库中的内容。
--mixed:版本库和暂存区都会回退,也是git reset的默认选项。
--hard:将所有区域的内容都进行回退,要慎用。
此时假设我们已经开发了一次,备注了“coding x function”
且文件中的内容为:
我们不想要这一次的结果了,我们想回到上一个版本。
此时就可以使用git提供的版本回退功能了。
此时的test的内容
这样就将工作区,暂存区,版本库中的内容全部回归到上一个版本了。
从这里我们也能发现git的版本回退是非常快速的,这是因为回退其实就是将HEAD指针的master修改就行,所以修改速度非常快。
git reflog 可以查看我们所有的commit id,这样导致了我们可以随便回归到那个版本。
但是不建议随便乱回退,可能commit id会被冲掉。
我们通过图来讲解git版本回退时本质的内容
9.撤销修改文件
这里的撤销修改指的是我们在对一个文件进行操作的时候所对应的操作,也就是觉得我们本次开发的代码非常不好,想回到开始时候的状态。
1:对工作区的代码的撤销,无add
方法1:自己手动修改。这种方法太挫了,这里就不进行演示了。
方法2:git checkout -- [filename],回到最近一次的add状态与commit状态。
2.已经进行了 add 操作,但没有commit操作
方法:git reset HEAD filename +git checkout -- [filename] 两步走
3.已经add,已经commit了
这时候的撤销我们只能依靠我们的git reset --hard/mixed/soft commitid 了,版本回退。
这里就不给大家进行演示了。
10.删除版本库中的文件
命令:git rm filename
我们通过具体的实例来讲解git rm
我们先创建file1,file2,file3,然后将他们删除。
此时使用git status来进行查看内容
我们在只需 git commit 操作就能将文件给彻底删除了。
总结使用git rm删除版本库中的文件的两步: git rm filename +git commit -m " xxx"
如何恢复我们在工作区所不小心删除的文件呢?
这里就可以使用撤销操作了,因为删除本质上也是修改。
本篇文章完!!!!感谢大家的耐心观看。
还有的内容将会在后面的文章中进行介绍,如果你觉得对你有用的话可以给个赞。
相关文章:
分布式版本管理系统---->Git(Linux---centos(保姆式)讲解1)
文章目录: 1:什么是Git以及作用 2.Git的基本操作过程(创建git仓库,配置仓库的配置) 3.git的工作区,暂存区,版本库的关系 4.将文件添加到版本库:git add 与git commit -m命令 5.git log查看日志的引入 6.查看.git文件中的内容 7.修改文件内容查…...
B树你需要了解一下
介绍B树的度数主要特点应用场景时间复杂度代码示例拓展 介绍 B树(B-tree)是一种自平衡的树,能够保持数据有序,常被用于数据库和文件系统的实现。 B树可以看作是一般化的二叉查找树,它允许拥有多于2个子节点。与自平衡…...
MFC设置状态栏文本导致崩溃的原因
文章目录 问题和原因解决办法1.消息机制2.定时器问题和原因 本人在类A使用多线程执行操作并且调用了类B的设置状态栏文本的函数,导致崩溃 类A void A::distribute_n_start_msg(){((B*)m_parent)->received_msg_n_start...
配置typroa上传图片到gitee
一、gitee相关配置 到gitee官网创建一个新的仓库并获取其token gitee配置时候一定要新建仓库之后初始化好仓库 比如:创建出README.md文档 出现master这个显示界面,刚开始未初始化的时候是会报错的 二、typora相关配置 在typora这个位置下载插件 在p…...
java并发-线程生命周期
文章目录 前言状态图状态变化说明补充说明 前言 线程的生命周期指的是线程从创建出来到最终消亡的整个过程,以及过程中的状态变化。 状态图 以下图用mermaid语法绘制: #mermaid-svg-32vKT6KmFdlYvCnr {font-family:"trebuchet ms",verdana,…...
Javaweb之Vue路由的详细解析
5 Vue路由 5.1 路由介绍 将资代码/vue-project(路由)/vue-project/src/views/tlias/DeptView.vue拷贝到我们当前EmpView.vue同级,其结构如下: 此时我们希望基于4.4案例中的功能,实现点击侧边栏的部门管理,显示部门管理的信息&am…...
力扣:196. 删除重复的电子邮箱(Python3)
题目: 表: Person ---------------------- | Column Name | Type | ---------------------- | id | int | | email | varchar | ---------------------- id 是该表的主键列(具有唯一值的列)。 该表的每一行包含一封电子邮件。电子邮件将不包含…...
Ruby和HTTParty库下载代码示例
ruby require httparty require nokogiri # 设置服务器 proxy_host "" proxy_port "" # 定义URL url "" # 创建HTTParty对象,并设置服务器 httparty HTTParty.new( :proxy > "#{proxy_host}:#{proxy_port}" ) …...
Unity 使用Horizontal Layout Group和Toggle制作多个水平开关按钮实现自动排列和单个点击放大后的自动排列。
Unity的布局组件Horizontal Layout Group是很好用的,当然也包括其它布局组件也一样好用。 比如要实现多按钮开关自动水平排列,那么就可以使用它了。 首先我们为按钮创建个父物体(我这里使用了Scroll View中的Content作为父物体)…...
Python实现FA萤火虫优化算法优化BP神经网络回归模型(BP神经网络回归算法)项目实战
说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 萤火虫算法(Fire-fly algorithm,FA)由剑桥大学Yang于2009年提出 , …...
灯塔ARL-NPoC全面教程
灯塔ARL-NPoC全面教程 1.ARL-NPoC2.安装3.参数解析4.ARL-NPoC编写指南标准POC模板`__init()__`verifyexploit_cmd5.将指纹同步到远程Web服务器1.ARL-NPoC 最新版的arl增加了poc编写与探测的功能,ARL-NPoC是一个集漏洞验证和任务运行的一个框架 2.安装 ARL-NPoC下载地址 下载…...
λ表达式、智能指针
lambda 表达式 1、C11标准支持,实现匿名函数的功能; 2、通常用于实现轻量级的函数 格式 mutable->返回值{函数体}; // 返回值即使是 void 也必须得写 [] 内,可以填外部数据; () 内,可以带有参数列表。 lambda 表达…...
PHP基础知识和操作
PHP在线运行 https://c.runoob.com/compile/1/ https://www.sotool.net/php80 将驼峰字符串转化为蛇形字符串 <?phpfunction CamelToSnake($camelValue) {$initValue preg_replace(/\s/u, , $camelValue);$snakeValue strtolower(preg_replace(/(.)(?[A-Z])/u, &quo…...
系列十三、SpringBoot的自动配置原理分析
一、概述 我们知道Java发展到现在功能十分的强大,生态异常的丰富,这里面离开不了Spring及其家族产品的支持,而作为Spring生态的明星产品Spring Boot可以说像王者一般的存在,那么的耀眼,那么的光彩夺目!那么…...
soapui报错: CXF directory must be set in global preferences
文章目录 下载官网下载网盘下载 配置 soapui生成代码时报错 CXF directory must be set in global preferences 下载 需要下载apache-cxf。 官网下载 官网地址: https://www.apache.org/dyn/closer.lua/cxf/3.5.4/apache-cxf-3.5.4.zip 点如下地址即可。 The obj…...
Netty02-基础概念
什么是netty Netty是一个基于Java NIO的异步事件驱动网络应用程序框架。它提供了简单易用的API,用于快速开发可维护的高性能网络应用程序。Netty的设计目标是提供一种高度可扩展的、高性能的网络应用程序框架,使得开发人员能够轻松地构建各种类型的网…...
计算机毕业设计 基于SpringBoot的敬老院管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…...
精调llama模型
github地址:https://github.com/facebookresearch/llama-recipes github:https://github.com/facebookresearch/llama import torch from transformers import LlamaForCausalLM, LlamaTokenizer#model_id"./models_hf/7B" # 可以从huggingface上面下载模…...
【C语言】深入理解C语言中的数学运算和类型转换
文章目录 引言取负运算的奥秘源码探索分析与解读 浮点数运算的精细差异源码分析精度损失与隐式类型转换 精度和除零运算探究float类型和double类型的精度各是多少(即十进制有效位的位数)?在你的机器上,“负数开方”是如何处理的&a…...
基于javaweb的宠物服务商城系统设计与开发
摘 要 最近几年以来,宠物在人们的日常生活中所占的地位越来越重要了,它们不仅仅是我们的朋友,也成为了我们家庭中的一份子。21世纪,信息技术飞速发展,计算机行业日新月异,极大地带动了信息的流动ÿ…...
LeetCode-470. 用 Rand7() 实现 Rand10()【数学 拒绝采样 概率与统计 随机化】
LeetCode-470. 用 Rand7 实现 Rand10【数学 拒绝采样 概率与统计 随机化】 题目描述:解题思路一:首先说一个结论就是(rand_X() - 1) Y rand_Y() > [1,X*Y],即可以等概率的生成[1, X * Y]范围的随机数,其实就像军训的时候报数…...
通达信指标公式19:龙虎榜股票池——主力控盘度的计算方法
0.小红牛本指标,选股的思路说明:控盘度,又称主力控盘,是指主力控制了某只股票的大部分流通股,从而控制了股票的价格。主力控盘的目的通常是为了获取更多的收益,通过控制股票价格来实现其策略。所以首要分析…...
手搓图片滑动验证码_JavaScript进阶
手搓图片滑动验证码 背景代码效果图展示网站 背景 在做前端项目开发的时候,少不了登录注册部分,既然有登录注册就少不了机器人验证,验证的方法有很多种,比如短信验证码、邮箱验证码、图片滑动、图片验证码等。 由于鄙人在开发中…...
Linux服务器超级实用的脚本
1.使用INOTIFY+RSYNC自动实时同步数据 代码执行: bash inotify_rsyncs.sh :cat inotify_rsyncs.sh 脚本内容如下: #!bing/bash # Author: reyn #检测/data路径下的文件变化,排除Temp目录 INOTIFY_CMD="inotifywait -mrq -e modify,create,move,delete /data/ --exc…...
IntelliJ IDEA安装使用教程#intellij idea
做为基础开发软件,idea、pycharm、phpstorm是高级企业级开发中常用的图形化工具。 安装非常简单:去官网下载即可,有社区版本、有企业版本: IntelliJ IDEA – 领先的 Java 和 Kotlin IDE 因版权问题:这里不方面多讲。…...
【组合数学】容斥鸽巢原理
目录 1. 容斥原理容斥原理三种形式 2. 容斥原理应用有限重复数的多重集合的 r 组合数错排问题 3. 鸽巢原理4. Ramsey 定理 1. 容斥原理 容斥原理提供了一种通过计算每个单独集合的大小,然后修正重复计数的方法,从而得到多个集合并集大小的计算方法。它通…...
视频后期特效处理软件 Motion 5 mac中文版
Motion mac是一款运动图形和视频合成软件,适用于Mac OS平台。 Motion mac软件特点 - 精美的效果:Motion提供了多种高质量的运动图形和视频效果,例如3D效果、烟雾效果、粒子效果等,方便用户制作出丰富多彩的视频和动画。 - 高效的工…...
【智能家居】一、工厂模式实现继电器灯控制
用户手册对应的I/O 工厂模式实现继电器灯控制 代码段 controlDevice.h(设备设备)main.c(主函数)bathroomLight.c(浴室灯)bedroomLight.c(卧室灯)restaurantLight.c(餐厅…...
第三节:提供者、消费者、Eureka
一、 提供者 消费者(就是个说法、定义,以防别人叭叭时听不懂) 服务提供者:业务中被其他微服务调用的服务。(提供接口给其他服务调用)服务消费者:业务中调用其他微服务的服务。(调用…...
Leetcode刷题详解——等差数列划分
1. 题目链接:413. 等差数列划分 2. 题目描述: 如果一个数列 至少有三个元素 ,并且任意两个相邻元素之差相同,则称该数列为等差数列。 例如,[1,3,5,7,9]、[7,7,7,7] 和 [3,-1,-5,-9] 都是等差数列。 给你一个整数数组 …...
上海高端室内设计事务所/seo排名查询软件
插件的安装如下:1.下载插件包https://github.com/vim-scripts/Pydiction可以直接下载,也可git下载[rootlocalhost]# git clone https://github.com/rkulla/pydiction.git#####################包括三个文件python_pydiction.vim #vim插件complete-di…...
精美合同网站建设/最好的优化公司
DNS域名解析 简单的说就是把域名翻译成 IP 地址,但如果在浏览器直接输入IP,则跳过这个步骤。 DNS寻找解析顺序: 浏览器缓存解析 操作系统缓存解析 公共域名服务器解析(根域名服务器/Root Server,主域名服务器&…...
深圳自适应网站建设价格/东莞企业网站排名
最近公司一个项目使用了模块化设计,本人参与其中的一个小模块开发,但是整体的设计并不是我架构设计的,开发半年有余,在此记录下来我的想法。 模块化场景 为什么需要模块化? 当一个App用户量增多,业务量增长…...
行政机关 网站源码/google搜索关键词热度
一. windows 系统下搭建jenkins环境1.1 jenkins环境搭建和构建job流程图1.2 安装jdkJDK下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html选择对应系统的安装包下载:配置环境变量:新建JAVA_HOME系统环境…...
wordpress 固定链接结构出错/网络优化器下载
距离矢量(Distance Vector)说法是因为路由是以矢量(距离、方向)的方式通告出去的,其中距离是根据度量定义的,方向是根据下一跳路由器定义的。因此,满足距离矢量路由选择协议的条件要有两条&…...
江西南昌电子商务网站建设公司/商城网站开发公司
Akka是一个构建在JVM上,基于Actor模型的的并发框架,为构建伸缩性强,有弹性的响应式并发应用提高更好的平台。本文主要是个人对Akka的学习和应用中的一些理解。 Actor模型 Akka的核心就是Actor,所以不得不说Actor,Actor…...