GIT基础01 基础命令与分支

前言

我们知道git是开发中比较常见的版本控制工具

我们可以先提出一个场景:

老板让你去修改方案 

第一次修改 打回

第二次修改 打回

第n次修改 老板让你使用第一次的版本  阁下如何应对???

我对每个版本进行编号??  是一种方案

但是这里也是有缺陷的  比如说在很多版本中找一个有特定功能的版本不好找  

此时我们就可以使用git

git可以记录每个文本文件的新增 二进制大小的更新

命令 

安装命令

sudo yum install  -y  git

初始化仓库

git init

新增配置项

git config user.name qqsbx
git config user.email "1815798600"

//注意这里的变量需要配置全局  不然只是这个仓库这里有用 所以我们加上--global

git  config --golbal user.name qqsbx

删除配置项

git config --global --unset  属性

下面我们提出git的三个重要概念区域 

工作区       暂存区    版本库

我们执行了以上命令git就能管理了吗???

并不见得   我们需要将对应的文件进行add     commit才行

这里add就是将文件上传到暂存区   commit就是将缓存区的文件提交就行版本控制 主要的流程如下

这里的版本控制咋实现的??

其实就是维护一个objects对象库   

然后对应的master分支等就是保存起的版本索引  

每次只切换索引 修改索引即可 比较轻量级

master分支下也是一个目录树,存储的也是索引

只要拿到对应的head指针就能拿到 master分支 就能拿到对象 

添加命令

git add .  就是将所有的新增文件加进去暂存区
git add  file  也可以输入文件名来进行添加


   确认命令

git commit -m  "描述"

查看日志

git log
//查看好看的日志 一行展示
git log --pretty=oneline

我们知道对应的git仓库就是隐藏文件.git

这里.git/HEAD中存放的就是master

master中存放的就是对应的本地提交的一个commitID

查看git文件的内容

git cat-file -p commitID

注意一定要add了之后才能commit 

git追踪管理的并不是文件  而是对修改追踪

我们可以查看仓库状态来查看

查看仓库状态

git status 

也可以查看到文件的新增内容

查看文件变化内容

git diff  file(文件名)

OK下面就到了我们最经典的版本控制以及回退功能的操作了

这里我们先画个图理解一下

版本回退

git  reset    --soft/--mixed/--hard   HEAD

这里的soft就是只回退工作区

mixed可以省略是默认的    是回退工作区和暂存区

hard也是最危险的 可以直接回退工作区  暂存区  版本库的内容

我们可以通过以下命令来进行回退

git reset --hard commitID   
//这里commitID就代表了某个版本

然后如果我们回退错了

但是还记得新版本的版本commitId  也是可以进行恢复的

但是日志一多就很容易找不到之前的版本号

我们只想回退工作区的时候可以使用

git checkout -- 文件名  

我们想回退一个版本可以使用

git reset --hard HEAD^


//这里的HEAD就表示当前版本,加上一个^就表示上一个版本
如果多加几个^就表示前n个版本

如果我们想进行删除文件可以使用以下命令

删除文件

rm file 
-> add  ->  commit



或者可以使用git提供的命令
git rm file   ---> 这个命令是直接包含add操作的
后面直接commit 即可

分支管理

我们知道git一般是由多个分支的

我们在开发的时候是往往由不同的分支来开发

经过一定的审核之后再融入主分支的

这里每个文件的更新是以子节点的形式产生的

比如a文件更新了

这里在版本库下就是更新前的id 指向更新后的id

更新后的id是更新前id的子节点

下面是一个简单的创建分支的过程

查看分支

git branch

HEAD指针就是用来指向工作分支的

就是以HEAD分支来区分当前的工作分支是哪些

创建分支

git branch  分支名

假设我现在新增一个dev分支

结果图就是这样的

注意这里的分支是在最新的版本基础上创建出来的

所以新创建的dev分支就只有最新版本这一个版本的版本号

切换分支

git checkout 分支名

我们这个时候就可以切换到对应分支

然后使用 第一条命令 带星号指向的就是当前的工作分支

合并分支

git merge dev 

注意这里是不能再本分支上合并本分支的

一定要切换到其他分支才能合并本分支

删除分支

git branch -d 

创建并切换

git checkout -b 新分支名

这里的-b 就是branch

我们知道这里的合并经常会出现合并冲突问题

解决方案也就是手动解决加上重新上传即可

手动解决就是git会给对应的文件加上一段代码进行选择

我们只需要选择我们需要的版本即可

修改完重新 add  commit 即可

我们举个例子

假设我在dev分支修改了原文件

然后再master分支也修改了这个文件

这个时候我们想把dev分支merge进master分支

就会出现合并冲突问题

类似于下图

此时的状态就是这样的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/625636.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

将 Vue、React、Angular、HTML 等一键打包成 macOS 和 Windows 平台客户端应用

应用简介 PPX 基于 pywebview 和 PyInstaller 框架,构建 macOS 和 Windows 平台的客户端。本应用的视图层支持 Vue、React、Angular、HTML 中的任意一种,业务层支持 Python 脚本。考虑到某些生物计算场景数据量大,数据私密,因此将…

odoo16 银行对账单导入改造

解决问题: odoo原生功能的话 是不能在系统上临时处理文件内容的,只会提示文件内容格式不对。 原始文件格式 在头部与尾部 格式问题,例如csv文件和 C53 文件,做一个前置弹框处理数据之后再导入 camt效果: csv效果:

Ajax额

原生Ajax xml 已被json取代 http 请求方法urlhttp版本号 network 谷歌浏览器查看请求报文和响应报文 F12 network header里面有 请求头 响应头 点击view source 可以查看请求响应行 请求体在请求行头下面 get请求有url参数,请求体变为query String…

九、e2studio VS STM32CubeIDE之const修饰BSP函数的形参

目录 一、概述/目的 二、通过串口发送函数对比 2.1 stm32 hal库 VS renesas FSP 2.2 const修改函数形参的作用 2.2.1 值传递-副本 2.2.2 指针传递(就近原则) 2.2.2.1 const修饰:*P 2.2.2.2 const修饰:指针变量P 2.2.2.3 …

工业物联网解决方案:机房动环监控系统

工业物联网解决方案:机房动环监控系统 工业物联网(IIoT)作为数字化转型的关键驱动力,正深刻改变着各行各业的运作模式,其中机房动环监控系统是实现智能化运维管理的重要组成部分。该系统通过集成传感器技术、大数据分…

基于51单片机的时钟万年历—可农历显示

基于51单片机的时钟万年历 (仿真+程序+原理图+设计报告) 功能介绍 具体功能: 1、可以显示年、月、日、时、分、秒、星期、农历; 2、按键可以设置闹钟及报警; 3、按键可以调整时…

Mimikatz安装 lsass进程 SAM NTML

目录 什么是Mimikatz Mimikatz在windows上安装及使用 mimkatz语法 lsass进程 SAM NTML 什么是Mimikatz Mimikatz是一款开源的Windows安全工具,由法国安全研究员Benjamin Delpy开发。它最初被设计为用于学习C语言和进行Windows安全性实验的工具。然而&#xf…

常用地图API平台对比:高德、百度、腾讯、必应、天地图

本文介绍高德、百度、腾讯、必应与天地图等5个地图开发API平台,并对其各自的优势与相对不足加以对比与主观分析。 最近,一些工作需要用到地图开发API方面的内容;在此之前,我还从来没有接触过地图开发相关API的知识与实践&#xff…

DigitalOcean 的PostgreSQL、MySQL、Redis、Kafka托管数据库,现已支持自定义指标收集功能

近期,我们的几个托管数据库(PostgreSQL、MySQL、Redis和Kafka)引入了自定义数据指标功能(scrapable metrics)。这些指标使您更具体、更细致地了解数据库的性能,包括延迟、资源利用率和错误率。然后&#xf…

SpringSecurity安全过滤器工作原理

前面通过三篇文章,从底层代码的角度分析了SpringSecurity的初始化过程。 接下来我们就要具体看一下,Spring Security的安全过滤器初始化、装配好之后,到底是怎么工作的。 还是按图索骥 下面我们简单从底层源码分析一下,请求是怎…

赋能业务全球化,明道云HAP通过亚马逊云科技 FTR认证

近日,明道云作为融合多元能力的超级应用平台,成功通过了AWS(Amazon Web Service)的FTR(Foundational Technical Review)认证。FTR是亚马逊云科技为合作伙伴解决方案提供的一项全面技术审核机制,…

Verilog代码bug:一种特殊的组合逻辑环

Verilog代码bug:一种特殊的组合逻辑环 组合逻辑环(Combinational Loop)是什么,别的文章已经写的很多了,本文就不赘述了,本文主要记录遇到过的一种特殊的逻辑环; 代码如下所示: mo…

苹果电脑卡顿反应慢怎么办 苹果电脑卡顿严重解决方法 mac电脑太卡了怎么办

作为Mac用户,你是否正在经历或者曾经遭遇过电脑卡顿、反应慢的困扰?这可能是由于多种原因导致的,包括自启动程序过多、系统与应用未及时更新、内存管理不当等。今天和你一起来探讨下,苹果电脑卡顿反应慢时怎么办。希望能够帮助你解…

知乎广告推广投放流程以及价格?

知乎作为一个拥有庞大高质量用户群体的知识分享平台,成为了众多品牌不可忽视的广告投放渠道。知乎不仅汇聚了各行各业的专业人士,其独特的社区氛围也为品牌提供了精准触达目标受众的机会。知乎广告推广的投放流程、费用标准,云衔科技提供的专…

css如何实现边框模糊的效果

其实并不难&#xff0c;用属性 filter: blur(数字px); 即可。效果如下&#xff1a; 图上的圆形内有色彩的渐变&#xff0c;同样也是用filter: blur(数字px); 实现的&#xff0c;代码如下&#xff1a;、 <template><div id"root" :style"{}">…

Jenkins构建流程

Jenkins是DevOps【(Development和Operations的混成词&#xff09;是一种重视“软件开发人员&#xff08;Dev&#xff09;”和“IT运维技术人员&#xff08;Ops&#xff09;”之间沟通合作的文化、运动或惯例)】的重要一环&#xff0c;是一款开源的CI&CD软件。也就是持续集成…

【35分钟掌握金融风控策略27】贷中风控策略与客户运营体系

目录 贷中风控策略与客户运营体系 贷中风控日标 贷中风控数据源 贷中风控策略与客户运营体系 贷中是风控的第二道防线&#xff0c;贷中阶段风控的重点工作就是存量客户风控及运营。在当下&#xff0c;新客市场趋于饱和且获客成本越来越高&#xff0c;所以&#xff0c;在做好…

手撸XXL-JOB(四)——远程调用定时任务

Java Socket网络编程 网络编程是Java编程中的重要组成部分&#xff0c;包括服务端和客户端两部分内容。Socket是Java网络编程的基本组件之一&#xff0c;用于在应用程序之间提供双向通信&#xff0c;Socket提供了一种标准的接口&#xff0c;允许应用程序通过网络发送和接收数据…

车载GPT爆红前夜:一场巨头竞逐的游戏

在基于GPT-3.5的ChatGPT问世之前&#xff0c;OpenAI作为深度学习领域并不大为人所看好的技术分支玩家&#xff0c;已经在GPT这个赛道默默耕耘了七八年的时间。 好几年的时间里&#xff0c;GPT始终没有跨越从“不能用”到“能用”的奇点。转折点发生在2020年6月份发布的GPT-3&a…

实时“秒回”,像真人一样语音聊天,GPT-4o模型强到恐怖

今天凌晨OpenAl发布了 GPT-4o&#xff0c;这是一种新的人工智能模式&#xff0c;集合了文本、图片、视频、语音的全能模型。 能实时响应用户的需求&#xff0c;并通过语音来实时回答你&#xff0c;你可以随时打断它。还具有视觉能力&#xff0c;能识别物体并根据视觉做出快速的…