Git原理与使用(一)

目录

前言

版本控制器

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~

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

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

相关文章

图片编辑器中实现文件上传的三种方式和二进制流及文件头校验文件类型

背景 最近在 vue-design-editor 开源项目中实现 psd 等多种文件格式上传解析成模板过程中, 发现搞定设计文件上传没有使用 input 实现文件上传, 所以我研究了一下相关技术, 总结了以下三种文件上传方法 input 文件选择window.showOpenFilePicker 和 window.showDirectoryPicke…

Follow-Your-Click——点选图像任意区域对象使用短提示语即可生成视频

简介 “I2V”(图像到视频生成)旨在将静态图像转换为具有合理动作的动态视频剪辑,在电影制作、增强现实和自动广告等领域有广泛应用。然而,现有的I2V方法存在一些问题,例如缺乏对图像中需要移动的部分的精准控制&#…

RAFT: Adapting Language Model to Domain Specific RAG

预备知识 RAG介绍一文搞懂大模型RAG应用(附实践案例) - 知乎 (zhihu.com) RAG的核心理解为“检索生成” 检索:者主要是利用向量数据库的高效存储和检索能力,召回目标知识; 生成:利用大模型和Prompt工程…

Android Studio实现内容丰富的安卓校园公告助手

获取源码请点击文章末尾QQ名片联系,源码不免费,尊重创作,尊重劳动 093校园助手 1.开发环境 android stuido3.6 jak1.8 eclipse mysql tomcat 2.功能介绍 具体往下看第三节,功能截图 安卓端: 1.注册登录 2.校园公告列表…

微信小程序订阅消息(一次性订阅消息)

1、准备工作 登录微信公众平台–>订阅消息–>在公共模板库中选中一个模版–>将模版id复制,前后端都需要。 点击详情–>查看详细内容模版 复制给后端 2、相关api的使用 前端使用:wx.requestSubscribeMessage wx.openSetting wx.getSetti…

[Qt学习笔记]QPushButton点击事件和长按事件使用功能

1、背景介绍 在使用QPushButton中,一般都在UI界面直接右键添加槽函数进入代码,很少去分析每个触发事件的功能,比如需要通过长按按钮来触发相应的操作,这里点击信号不可以达到预期的效果。 2、功能分析 首先分析QPushButton的点…

13014.Linux小知识点记录

文章目录 1 工具记录1.1 串口传输文件 1 工具记录 1.1 串口传输文件 打开SecureCRT的串口,执行rx 文件名指令从桌面将可执行文件,拖拽到串口终端即可

计算机三级——网络技术(综合题第二题)

路由器工作模式 用户模式 当通过Console或Telnet方式登录到路由器时,只要输入的密码正确,路由器就直接进入了用户模式。在该模式下,系统提示符为一个尖括号(>)。如果用户以前为路由器输入过名称,则该名称将会显示在尖指号的前…

opengl日记10-opengl使用多个纹理示例

文章目录 环境代码CMakeLists.txt文件内容不变。fragmentShaderSource.fsvertexShaderSource.vsmain.cpp 总结 环境 系统:ubuntu20.04opengl版本:4.6glfw版本:3.3glad版本:4.6cmake版本:3.16.3gcc版本:10.…

【Hadoop】Hadoop 编译源码

目录 为什么要源码编译Hadoop 编译源码1前期工作准备2jar 包安装2.1安装 Maven2.2安装 ant2.3安装 glibc-headers 和 g2.4安装 make 和 cmake2.5安装 protobuf2.6安装 openssl 库2.7安装 ncurses-devel 库 3编译源码3.1解压源码到 /opt/ 目录3.2 进入到 hadoop 源码主目录 /opt…

课时70:流程控制_for循环_嵌套循环

2.4.4 嵌套循环 学习目标 这一节,我们从 基础知识、简单实践、小结 三个方面来学习。 基础知识 简介 这里的嵌套实践,与选择语句的嵌套实践基本一致,只不过组合的方式发生了一些变化。常见的组合样式如下:for嵌套for语句for …

【Android】【Bluetooth Stack】蓝牙电话本协议分析(超详细)

1. 精讲蓝牙协议栈(Bluetooth Stack):SPP/A2DP/AVRCP/HFP/PBAP/IAP2/HID/MAP/OPP/PAN/GATTC/GATTS/HOGP等协议理论 2. 欢迎大家关注和订阅,【蓝牙协议栈】专栏会持续更新中.....敬请期待! 目录 1. 协议简述 1.1 PBAP…

Qt笔记 事件处理_鼠标事件

什么是事件? 点击鼠标左键,双击鼠标左键,鼠标来回移动,按下键盘按钮,这些都是事件。 那么事件的响应机制是什么样的呢? 首先main函数中有一个QApplication,其作用是创建一个应用程序对象&…

11种创造型设计模式(下)

观察者模式 我们可以比喻观察者模式是一种类似广播的设计模式 介绍 观察者模式:对象之间多对一依赖的一种设计方案,被依赖的对象是Subject,依赖的对象是Observer,Subject通知Observer变化。 代码 说明: WeatherStat…

手撕算法-判断是不是二叉搜索树

题目描述 分析 二叉搜索树的特性就是中序遍历是递增序。既然是判断是否是二叉搜索树,那我们可以使用中序递归遍历。只要之前的节点是二叉树搜索树,那么如果当前的节点大于上一个节点值那么就可以向下判断。 如果有出现当前的节点小于上一个节点值&…

Host xxx1 has more disk space than database expected (xxx2 GB > xxx3 GB)

在nova-compute.log中有时会看到日志“Host xxx1 has more disk space than database expected (xxx2 GB > xxx3 GB)”类似日志。 查看下源码,如下: 分析: 定时任务更新主机资源到内存或者对象中,当执行检测的定时任务…

颠覆传统:Web3如何塑造未来的数字经济

引言 近年来,随着数字化时代的到来,互联网已经成为人们生活中不可或缺的一部分。然而,随着技术的不断发展和社会的不断变迁,传统的Web2模式逐渐显露出一些弊端,如数据垄断、隐私泄露等问题,这促使人们寻求…

Linux账号管理与ACL权限设置

文章目录 Linux的账户和用户组用户标识符:UID与GID用户账号用户组:有效与初始用户组groups,newgrp 账号管理新增与删除用户:useradd、相关配置文件、passwd、usermod、userdel用户功能:id、finger、chfn、chsh新增与删…

【文件操作和IO】

文件操作和IO 1.文件2. 硬盘上文件的目录结构3. 文件路径4. 文件重要分类:5. Java中操作文件5.1 Java对于文件操作的API5.2 Java中使用File类来进行文件操作5.3 File类属性5.4 构造方法5.5 方法: 6. 文件内容的读写 -- 文件流(数据流&#xf…

C++ List底层实现

文章目录 前言成员变量成员函数迭代器self& operator()前置self operator(int)后置self operator--()前置--self operator--(int)后置--bool operator!(const self & tmp)判断是否相等T* operator*() 解引用操作 list()初始化iterator begin()iterator end()const_iter…