Git原理与使用(一)

news2024/11/23 6:24:41

目录

前言

版本控制器

Linux下的Git的安装

Git的基本操作

创建Git本地仓库

配置Git

工作区、暂存区、版本库

添加与提交

查看.git文件


前言

我们可能要写多个文档对一个产品进行描述,但是一般情况下我们可能要写多个文档,比如:

  • 初始文档(版本1)
  • 修改文档1(版本2)
  • 文档max(版本3)
  • 文档promax(版本4)
  • ......

问题:随着版本数量的不断增多,可能会忘记对每个版本的进行修改的内容,文档如此,我们所写的项目代码也是有这样的问题存在的

版本控制器

基本概念:目前最主流的版本控制器就是Git,Git可以控制电脑上所有格式的文件,如:doc、excel、dwg、dgn、rvt等等,对开发人员来讲,Git最重要的就是可以帮助我们管理软件开发项目中的源代码文件

功能:可以记录工程的每一次改动和版本迭代的一个管理系统,同时也方便多人协同作业

注意事项:所有的版本控制器,只能跟踪文本文件的改动(TXT文件、网页、所有的程序代码等)它可以告诉你每次的改动内容(比如在第8行新增了一个单词“Linux”,在第10行删除了一个单词“Windows”)而图片、视频等二进制文件,虽然也能由版本控制器控制,但是无法跟踪文件的变化,只能把二进制文件每次的改动串起来(仅知道图片从100kb大小改成了120kb大小)其余的就不知道了

Linux下的Git的安装

安装指令:sudo yum install git -y

版本查询指令:git --version

卸载指令:sudo yum remove git -y

Windows下Git的安装:安装git和图形化界面工具_哔哩哔哩_bilibili

Git的基本操作

创建Git本地仓库

基本概念:git的本地仓库是进行版本控制的一个文件目录,对文件进行版本控制一定要创建它

创建指令:git init

注意事项:

1、git本地仓库要在一个空目录中创建

2、git本地仓库是一个隐藏文件

3、.git文件是Git用来跟踪和管理仓库的,不要修改这一文件

4、gitcode不是本地git仓库,.git才是

配置Git

配置用户名称的指令:git config [--global] user.name "自定义名称"

配置e-mail地址的指令:git config [--global] user.email "自定义邮箱地址"

删除配置指令:git config --unser user.(name、email等)

列出当前Git仓库的配置项:git config -l

注意事项:

1、一个服务器中可以创建多个本地仓库

2、--global指令会使得本地服务器中所有的Git仓库都会使用当前的配置内容,如果希望在不同仓库中使用不同的name或email可以不要该选项

3、执行对Git仓库的命令时必须在该仓库所在的目录下

4、在全局范围内充值配置指令

  • git config --global --upset user.(name、email等等)

工作区、暂存区、版本库

工作区:电脑上要写代码或文件的目录(gitcode是工作区)

暂存区(索引):一般存放在.git目录下的index文件中(.git / index),git add后的文件会被添加至此(但不会显示)

版本库(仓库):工作区的隐藏文件.git不工作区而是Git的版本库,该库中的所有文件都可以被Git管理,每个文件的修改、删除、Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来的某个时刻进行“还原”

注意事项:

1、Git版本库中最重要的就是缓存区

2、在创建Git版本库时,Git会自动创建一个唯一的master,及指向master的指针HEAD

git add 目录路径

3、对工作区的文件执行git add时,暂存区会更新

4、执行git commit时,暂存区的内容会被真正的写到版本库中,master同时也更新

5、stage和maseter中存放的是索引,真正的文件位于object库中

6、HEAD是指向master的指针,master中存放最新一次提交的文件的id

7、新建或粘贴进.git所在目录的文件,并不能称之为向仓库中新增文件,只是在工作区新增了文件,必须要通过git add和git commit命令才能将文件添加到仓库中进行管理

8、每个id对应一个Git对象,该对象放在object库中,利用id可以找到objec库中的对象

9、id = 所处文件夹名称“前两位” + 文件名“后三十八位”

添加与提交

添加指令:git add 文件名 (将指定文件添加)

提交指令:git commit  "对修改文件的描述(这个文件干了什么事)"

查看提交记录指令:git log [--pretty = oneline]

注意事项:
1、可以一次添加一个或多个文件到暂存区

git add 文件名1 文件名2 ...

2、添加指定目录到缓存区,包括子目录

git add 目录路径

3、添加当前目录下的所有文件改动到缓存区

git add .

4、提交暂存区的全部内容到master(实际上这时才算进入版本库)

git commit -m "message"

5、提交暂存区的指定文件到master(实际上这时才算进入版本库)

git commit 文件名1 文件名2 ... -m "message"

6、-m后必须跟"message",message由用户自行填写,且绝不能省略,要好好描述,它是用来记录提交细节的,是给用户看的

git commit -m "add my first file"

7、git log 查看从近及远的提交记录,且能看到我们"message"中的内容

8、如果嫌弃输出信息太多,可以尝试加上--pretty = oneline,将这些消息在一行显示

9、 id(版本号)是一个SHA1(散列算法1)计算出来的一个非常大的数字,用十六进制表示 

查看.git文件

查看git树指令:tree .git

查看对象指令:git cat-file -p id

  1. git log查看提交记录,找到某一批次提交的id(commit id)
  2. git cat-file -p id查看该批次提交的相关内容

  • parent:上一批次提交的id
  • author:文件创建者
  • committer:文件提交者
  • tree(tree id):存放该批提交的文件的所有文件的id(blob id)

对tree id进行cat-file -p可以得到该批次所有修改的文件的blob id

这些id都可以在.git的tree中找到(为什么file123文件的id相同我也不知道)

再次使用git cat-file -p id可以查看这些文件中的真正的内容:

结论:git log查看的是每一批内容提交时所给的id(特指commit id),每一批中可能有很多内容这些内容又有自己对应的id(特指blob id)git cat-file -p 查看commit id得到一个tree id,查看tree id得到多个blob id,查看blob id得到具体内容

~~~~~~git log 得到 commit id~~~~~~

~~~~~~git cat-file -p commit id 得到 tree id~~~~~~

~~~~~~git cat-file -p tree id 得到 blob id~~~~~~

~over~

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

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

相关文章

Rust Rocket简单入门

简介 Rust中最知名的两个web框架要数Rocket和Actix了,Rocket更注重易用性,Actix则更注重性能。这里只是了解一下Rust下的WebAPI开发流程,就学一下最简单的 Rocket。 Rocket 是一个用于 Rust 的异步 Web 框架,专注于可用性、安全性…

NCV4266ST50T3G线性稳压器芯片中文资料规格书PDF数据手册引脚图参数图片价格

产品概述: NCV4266 是一款集成了 150 mA 输出电流的低漏稳压器系列,可用于严酷汽车环境。它包括了较宽的运行温度范围和输出电压范围。该器件提供 3.3 V、5.0 V 固定电压版本,以及可调电压版本,输出电压准确度为 2%。它具有较高的…

web攻防——csrf,ssrf

csrf 当我们在访问自己的管理员系统的时候,打开别人发的钓鱼连接就会自动增加管理员(前提,后台在登录状态)当我们打开别人发的网站,就会触发增加管理员的数据包 假设我们要测试这个网站 看到这个,就得下载一…

ES 常见面试题及答案

目录 es 写入数据流程 es 删除数据流程 es 读数据流程 es 部署的服务有哪些角色 es 的实现原理 es 和lucence 关系 如何提高写入效率 提高搜索效率 es doc value指的啥 分片指的啥,定义后可不可义再修改 深分页如何优化 对于聚合操作是如何优化的 元数据…

Vue+Element-UI Table表格实现复选框单选效果(隐藏表头上的全选Checkbox)

实现效果 完整代码 <div class"box-pos"><el-table ref"table" :header-cell-style"{ color: #FFF, background: #333 }":cell-style"{ color: #FFF, background: #333 }" :data"grListData" style"width: 1…

网状的隧道穿梭特效HTML代码

网状的隧道穿梭特效HTML代码&#xff0c;效果是动态的&#xff0c;可以下载源码&#xff0c;自己在本地运行 源码下载 网状的隧道穿梭特效HTML代码

uni-app 中两个系统各自显示不同的tabBar

最近在一个uni-app项目中遇到一个需求,在登录页面成功登录以后需要判断身份,不同的身份的进入不同的tabBar页面,但是在uni-app项目中pages.json中的tabBar的list数组只有一个&#xff0c;且不能写成动态的,那如何实现这个需求呢?答案是需要我们自定义tabBar。 目录 1、我们确…

关于paper中的一些硬件知识

一. OS中的event Information in event traces from software systems can help developers with performance analysis, debugging and troubleshooting 1.事件的概念 已知软件系统中的event能够帮助开发者对系统进行性能分析、调试以及定位&#xff0c;那我们应该仔细考虑…

简单了解:localhost 与 127.0.0.1 的区别

在信息技术的世界里&#xff0c;localhost和127.0.0.1频繁出现在各种网络及软件开发的场景之中。它们似乎指向同一个意义——那就是你的本地机器。但仔细探究之下&#xff0c;你会发现它们之间其实存在着一些微妙的差异。今天&#xff0c;我们就来深究这两者之间的区别&#xf…

Maxwell监听mysql的binlog日志变化写入kafka消费者

一. 环境&#xff1a; maxwell:v1.29.2 (从1.30开始maxwell停止了对java8的使用&#xff0c;改为为11) maxwell1.29.2这个版本对mysql8.0以后的缺少utf8mb3字符的解码问题&#xff0c;需要对原码中加上一个部分内容 &#xff1a;具体也给大家做了总结 &#xff1a; 关于v1.…

GaussDB(分布式)实例故障处理

一、说明 GaussDB Kernel实例出现故障时&#xff0c;可以按照本节的办法进行实例快速修复。 1、执行gs_om -t status --detail查看集群状态&#xff0c;cluster_state为Normal&#xff0c;balanced为No&#xff0c;请重置实例状态。 2、执行gs_om -t status --detail查看集群…

MySQl基础入门⑩

上一章内容 数据插入、更新与删除 以下是创建一个名为users的表并定义其字段结构的SQL命令&#xff08;以MySQL为例&#xff09;&#xff1a; CREATE TABLE users (id INT AUTO_INCREMENT, username VARCHAR(255) NOT NULL,email VARCHAR(255) NOT NULL UNIQUE,password VAR…

new mars3d.layer.GeoJsonLayer({的pupup配置参考

new mars3d.layer.GeoJsonLayer({的pupup配置可选项以及相关效果参考&#xff1a; 说明&#xff1a;popup按属性字段配置&#xff0c;可以是字符串模板或数组 1.popup仅配置{type}{name}等属性的的时候&#xff0c;指显示json文件内数据的type与name&#xff0c;效果如下 相关…

关系型数据库mysql(2)SQL语句

目录 一.SQL语句简介 1.1SQL语言 1.2SQL语句分类 1.3SQL分类 1.4SQL 语言规范 二.数据库基本操作 2.1查看数据库中的库信息 2.2查看数据库中的表信息 数据库内查看 数据库外查看 2.3显示数据库的结构&#xff08;字段&#xff09; ​编辑 2.4 字段属性 2.5常见的数…

记录一下目前为止的算法成长

每日笔记 复习曲线 间隔1天、3天、7天、15天、30天&#xff0c;然后以一个月为周期复习 2023. 12. 24 一定要每天早中晚都要复习一下 早中午每段一两道, 而且一定要是同一个类型, 不然刷起来都没有意义 11.29 开始向着面试刷题跟进! 每天刷4题左右 ,一周之内一定要是统一类…

这里是一本关于 DevOps 企业级 CI/CD 实战的书籍...

文章目录 &#x1f4cb; 前言&#x1f3af; 什么是 DevOps&#x1f3af; 什么是 CI/CD&#x1f3af;什么是 Jenkins&#x1f9e9; Jenkins 简单案例 &#x1f3af; DevOps 企业级实战书籍推荐&#x1f525; 参与方式 &#x1f4cb; 前言 企业级 CI/CD 实战是一个涉及到软件开发…

AIOCR:AI文字识别web集成系统@Kylin+RISCV

基于kotti_ai的AI文字识别web集成系统 AIOCR项目目标&#xff1a; 在KylinRISCV搭建一个kotti_ai构架的网站&#xff0c;提供AI OCR文字识别web服务。 二期目标&#xff1a;在AIOCR的基础上提供chatgpt和文心一言等大模型调用&#xff0c;建立综合大模型应用平台。 功能&am…

STL_list文档使用介绍与底层代码实现简介

文章目录 list介绍list的使用构造函数&#xff08;constructor&#xff09;迭代器list capacitylist modify&#xff08;修改&#xff09;其他接口函数list迭代器失效问题 list实现基础框架(节点类&#xff09;基础框架&#xff08;迭代器类&#xff09;基础框架&#xff08;链…

爬虫系列-CSS基础语法

&#x1f308;个人主页&#xff1a;会编程的果子君 &#x1f4ab;个人格言:“成为自己未来的主人~” CSS全称层叠样式表 &#xff0c;主要用来定义页面内容展示效果的一门语言&#xff0c;HTML&#xff1a;页面骨架&#xff0c;素颜CSS&#xff1a;页面效果美化&#xff1a…

【概念】神马是分布式?

SueWakeup​​​​​ 个人主页&#xff1a;SueWakeup 系列专栏&#xff1a;学习Java框架 个性签名&#xff1a;保留赤子之心也许是种幸运吧 本文封面由 凯楠&#x1f4f7; 友情赞助播出&#xff01; 目录 前言 1. 系统架构的演变 2. SOA 与微服务的关系 3. 分布式核心知识…