Git相关知识(1)

news2024/11/17 22:14:29

目录

1.初识Git 

1.基础知识

2.centos中下载

2.基本操作

1.创建本地仓库

2.配置本地仓库

3.版本库、工作区、暂存区

4.添加文件

5.add和commit对git文件的作用

6.修改文件

7.版本回退

8.撤销修改

9.删除文件

3.分支操作

1.HEAD与分支

2.创建分支

3.删除分支

4.合并冲突

5.分支管理

6.分支决策


1.初识Git 

1.基础知识

Git:是一种版本控制器,用于记录每一次修改以及版本迭代的一个管理系统

作用:可以控制电脑上所有格式的文档,对于开发人员而言最重要的就是可以管理项目中的源代码文档

2.centos中下载

sudo yum install git -y

2.基本操作

1.创建本地仓库

想要Git进行管理,必须将文件放在Git仓库中进行管理

git init:在当前文件中创建一个Git仓库

此时我们会发现文件中有一个隐藏文件.git,其用于追踪管理文件

2.配置本地仓库

1.配置用户名称:git config user.name "(这里写用户名字)"

2.配置用户email地址:git config user.email"(这里写用户地址)"

3.查看当前所有的配置属性:git config -l

4.重置配置:git config --unset XXX(属性)

在当前主机下,本地仓库可以开辟多个

5.所有本地仓库的配置项:本地仓库git config --global XXX(属性) YYY(配置信息)

6.--global创建的属性,不能通过普通的重置,得使用git config --global --unset XXX(属性)

3.版本库、工作区、暂存区

1.如果直接新建一个文档在本地仓库下,那么此时git并没有对该文档进行管理

2.真正管理文件的仓库其实是.git这个隐藏文件。此外不能对.git进行手动修改

3..git为版本库,也叫做仓库

4.生成的这个文档其实在工作区

5.index为暂存区,也是索引。存储的是修改对象的索引

6.objects:对象库,存储git对象。修改的工作区内容会写入到对象库的一个git对象。用于维护所有文件的版本

7.master:存储修改对象的索引

add:将工作区的修改文件添加到暂存区。这里的修改文件指的是:增删改的文件

commit:将index的文件存入到master中,此刻才能说文件被放入了版本库中进行管理

4.添加文件

git add . :工作区所有文件添加到暂存区

git add (指定文件) :工作区指定文件添加到暂存区

git commit -m "(本次添加的细节)"

git log:查看由近到远的提交记录细节   [git log --pretty=oneline]

5.add和commit对git文件的作用

1.add之后的内容都在index中

2.cat .git/HEAD后,我们能查看到HEAD指向的是master

3.master存放的是最新的commit的id

4.objects中存放了很多的对象

5.git  cat-file -p commit的id:查看objects中的对象

6.修改文件

git status:查看哪些文件进行修改

git diff 文件名:查看文件修改的是情况(-为原版,+为改版)

7.版本回退

git reset [--soft | --mixed | --head] [HEAD]:本质是将版本库的版本进行回退

--soft:只回退版本库

--mixed:回退版本库和暂存区

--head:回退所有内容

git reflog:查看每次本地提交命令

1.配合git log --pretty=oneline查看得到commitID,使用git reset [--soft | --mixed | --head] [HEAD]

2.git reset [--soft | --mixed | --head] [HEAD]可以回退,但是需要得到commitID

1.版本回退的速度其实很快

2.其原理其实是因为HEAD指向的master中有commitID,只需要在回退版本时将master的commitID修改即可

3.git reset还可以回退到当前版本,用于撤销修改。默认时--mixed,^表示回退一个版本

8.撤销修改

撤销有不同的策略:

1.只有工作区修改了

1.手动撤销 --- 不推荐 

2.git checkout -- [文件名]

2.工作区和暂存区修改了

1.git reset --head 文件名 HEAD

2.git reset 文件名,就变成了条件1

3.所有区都修改了

git reset --head HEAD

1.push操作可把版本库内容发送给远程仓库

2.想要实现条件3撤销修改操作,需要在commit之后没有进行push操作

3.条件3修改是为了不影响远程仓库

9.删除文件

方法1:rm删除文件后,还想要add和commit将文件更新

方法2:git rm 文件,实际该操作包含rm和add两步,最后我们commit即可

3.分支操作

1.HEAD与分支

HEAD指向的master,master记录最新的commitID。通过对master的结构中的parent能够回溯到之前的版本中去

2.创建分支

git branch:查看分支

git branch 创建分支的名称:创建分支

1.HEAD可以指向其他分支,被HEAD指向的分支才是当前工作的分支

2.此时我们会发现,HEAD文件中有一个master和一个新建的分支。并且这个新建分支指向的也是当前的工作分支

git checkout 分支名称:切换分支(HEAD指向新分支)

git merge 分支名称:合并分支

3.删除分支

删除分支的条件就是:必须在其他的分支上对非当前分支上进行删除

git branch -d 分支名:删除指定分支,指的是合并后的删除

4.合并冲突

多条分支对同一个文件进行操作后,使得文件的内容都不一样,那么此时如果进行git merge合并操作,那么就会报错说明当前的内容合并冲突了,需要我们自己手动进行筛选自己想要的内容。

一旦冲突修复完毕,需要重新对文件进行提交。

git log --graph --abbrev-commit:可视化分支结构

5.分支管理

git merge合并的通常为Fast forward模式。该模式无法判断是merge进来的文件还是正常提交的文件

git merge --no--ff -m "提交信息" 分支:不使用Fast forward模式

6.分支决策

1.master分支:在任何环境下都是稳定的环境,它在项目实现中作为最终出现的结果。其他分支不稳定需要经过公司的一系列测试最终将稳定的代码合并到master中去。其他分支的编写真好符合分组开发的要求。

2.bug分支:master分支稳定也不能百分百得到保证,它也会出现bug。我们不能在master中直接对文件进行修改。当然所有业务开发的文件都可以创建bug分支对文件进行修改为保证可靠性。

git stash:将工作区的内容进行存储,保存到/refs中。

git stash list:查看保存

git stash pop:撤回stash

1.如果其他文件正在开发,master出bug了,那么将其他开发文件git stash保存,此时的文件变回原来的内容。随后创造bug分支,将所有的修改改完合并到master中。最后将其他开发git stash pop,撤回stash继续开发。

2.若想继续将master和其他文件进行合并,不建议直接在master中合并,我们要在其他文件中合并,就算合并有bug也可以慢慢改

未merge的分支的删除操作:

1.首先说明不能使用git branch -d,因为文件被保护无法删除

2.可以使用git branch -D强制删除

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python中TagMe包的token获取

草,找了40分钟!帮助大家少浪费时间。 1.注册Tagme,注册地址https://services.d4science.org/home (我用邮箱注册一直说验证码不对,最后用Google账号注册的) 2.找sobigdata 3.进入sobigdata后,…

17基于matlab卡尔曼滤波的行人跟踪算法,并给出算法估计误差结果,判断算法的跟踪精确性,程序已调通,可直接运行,基于MATLAB平台,可直接拍下。

17基于matlab卡尔曼滤波的行人跟踪算法,并给出算法估计误差结果,判断算法的跟踪精确性,程序已调通,可直接运行,基于MATLAB平台,可直接拍下。 17matlab卡尔曼滤波行人跟踪 (xiaohongshu.com)

MySQL总结练习题

目录 1.准备数据表 2.表之间的关系 3.题目 3.1 取得每个部门最高薪水的人员名称 3.2 哪些人的薪水在部门的平均薪水之上 3.3 取得部门中(所有人的)平均的薪水等级 3.4 不准用组函数(Max ),取得最高薪水 3.5 取…

Java基础之反射机制

背景:Java程序中的所有对一项都有两种类型:编译时类型和运行时类型(由于多态导致的),这可能会导致对象的编译时类型和运行时类型不一致。 反射(Reflection)是被是为动态语言的关键,反…

速通Redis基础(二):掌握Redis的哈希类型和命令

目录 Redis 哈希类型简介 Redis 哈希命令 HSET HGET HEXISTS HDEL HKEYS HVALS HGETALL HMGET HLEN HSETNX ​编辑 HINCRBY HINCRBYFLOAT Redis的哈希类型命令小结 Redis 是一种高性能的键值存储数据库,支持多种数据类型,其中之…

jdbc+数据连接池

1.1 JDBC概念 JDBC 就是使用Java连接并操作数据库的一套API 全称:( Java DataBase Connectivity ) Java 数据库连接 1.2 JDBC优势 可随时替换底层数据库,访问数据库的Java代码基本不变 以后编写操作数据库的代码只需要面向JDBC(接口&…

如何在Windows系统搭建VisualSVN服务并在公网远程访问【内网穿透】

文章目录 前言1. VisualSVN安装与配置2. VisualSVN Server管理界面配置3. 安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4. 固定公网地址访问 前言 SVN 是 subversion 的缩写,是一个开放源代码的版本控制系统…

尚品甄选2023全新SpringBoot+SpringCloud企业级微服务项目

最适合新手入门的SpringBootSpringCloud企业级微服务项目来啦!如果你已经学习了Java基础、SSM框架、SpringBoot、SpringCloud,想找一个项目来实战练习;或者你刚刚入行,需要可以写到简历中的微服务架构项目! 项目采用前…

大运新能源天津车展深度诠释品牌魅力 为都市人群打造理想车型

如今,新能源汽车行业发展潜力巨大,不断吸引无数车企入驻新能源汽车赛道,而赛道的持续紧缩也让一部分车企很难找到突破重围的机会。秉持几十年的造车经验,大运新能源凭借雄厚的品牌实力从一众车企中脱颖而出。从摩托车到重卡&#…

在两个有序数组中找整体第k小的数

一、题目 给定两个已经排序的数组(假设按照升序排列),然后找出第K小的数。比如数组A {1, 8, 10, 20}, B {5, 9, 22, 110}, 第 3 小的数是 8.。…

基于 Mtcnn(人脸检测)+Hopenet(姿态检测)+拉普拉斯算子(模糊度检测) 的人脸检测服务

写在前面 工作原因,顺便整理博文内容为一个 人脸检测服务分享以打包 Docker 镜像,可以直接使用服务目前支持 http 方式该检测器主要适用低质量人脸图片处理理解不足小伙伴帮忙指正,多交流,相互学习 对每个人而言,真正的…

11.动名词

一.什么是动名词 动名词是动词的另一种非谓语动词形式。动名词跟宾语或状语构成动名词短语,动名词跟动词不定式一样,都属于非谓语动词,不能作谓语,动名词或动名词短语可以作主语,表语,宾语,介词…

fastjson2与fury的巅峰对决,谁会笑到最后?

写在前面 两个月前,我们写过一篇关于fury和protostuff的性能对比的文章:谁才是真正的协议之王?fastjson2 vs fury,那时,两个协议框架各有千秋,不分伯仲,今天,看到fury推出了全新的0…

我用Python写了几个摸鱼小游戏,赐你2023年度上班上学摸鱼必备良品!(附源码)

文章目录 前言一丶超级玛丽二、沙漠打地鼠三、贪吃蛇四、坦克大战五、五子棋 前言 获取python整套完整教程,3263学习笔记,源码,项目实战,全部在手,python不愁~~~ Python学习资料点击领取福利 例如: 超级…

js高级(2)函数的柯里化,cookie的使用,10天免登录案例,购物车案例,拖动盒子小案例等等

1.函数的柯里化 自定义函数的柯里化 // 自定义函数的柯里化function curry(fn) {//判断输入的函数有几个参数let len fn.length;// 返回一个函数,并且有函数名为treturn function t() {// 获取到实参的个数let innerLength arguments.length// 获取到真实参数,转化为数组[.…

FPGA---UDP通信求助

项目场景: 使用UDP进行回环,网络调试助手,发送数据通过UDP接收模块接收,解析出数据,给到UDP发送模块,传回上位机。 问题描述 UDP接收模块中,接收到的CRC校验值与自己计算CRC校验值进行判断&am…

【电商API接口的应用:电商数据分析入门】初识Web API(一)

如何使用Web应用变成接口(API)自动请求网站到特定信息而不是整个网站,再对这些信息进行可视化。由于这样编写到程序始终使用最新到数据来生成可视化,因此即便数据瞬息万变,它呈现到信息也都是最新的。 使用Web API Web API是网站的一部分&am…

javapoet 注释中添加枚举值

问题描述 使用javapoet生成源代码 为了实现这么一个目的 解决 翻了一下源代码,他的实现如下: 这个方法是私有的,暂时不确定如何调用 照着这个方法,即可实现大多数类型的基本调用 即可实现上图需要的效果

为Yolov7环境安装Cuba匹配的Pytorch

1. 查看Cuba版本 方法一 nvidia-smi 找到CUDA Version 方法二 Nvidia Control Panel > 系统信息 > 组件 > 2. 安装Cuba匹配版本的PyTorch https://pytorch.org/get-started/locally/这里使用conda安装 conda install pytorch torchvision torchaudio pytorch-cu…

[华为认证]路由表和FIB表

路由器转发数据包的关键是路由表和FIB表,每个路由器都至少保存着一张路由表和一张FIB(Forwarding Information Base)表。路由器通过路由表选择路由,通过FIB表指导报文进行转发。 路由表 每台路由器中都保存着一张本地核心路由表&…