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~

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AD域的部署

一台win10客户端加入进域服务服务器,将客户端DNS指向域控服务器-查看,更改客户端计算机名并加入隶属于域中-shanxi.com-填写服务器账户和密码-重启客户端 计算机名、域和工作组设置 4/查看是否配置正确-此电脑-属性 首先我们打开服务器右击此电脑点击属…

Vue.js开发基础

单文件组件 使用Vite创建Vue项目后,目录结构中包含一些扩展名为.vue的文件,每个.vue文件都可用来定义一个单文件组件。Vue中的单文件组件是Vue组件的文件格式。每个单文件组件由模板、样式和逻辑3个部分构成。 运行结果: 1.模板 模板用于搭建…

Python greenlet的使用,gevent和猴子补丁

目录 greenlet 结果 gevent和猴子补丁 结果 gevent使用案例 注:代码有解释 greenlet #greenlet 完成协程任务,封装你的生成器 import timefrom greenlet import greenlet#在执行下面三个任务的时候,当前进程是开了三个线程 #sleep就相当于线程暂停…

利用colab部署chatglm

登录colab 创建新的notebook 选择notebook设置 选择GPU然后保存,需要选择GPU 克隆代码 !git clone https://github.com/THUDM/ChatGLM-6B.git切换到目录安装所需要的依赖 %cd /content/ChatGLM-6B %pwd !pip install -r requirements.txt安装所需要的依赖包 …

Java特性之设计模式【组合模式】

一、组合模式 概述 组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式&#x…

2024年腾讯云优惠券领取入口整理,共四个渠道领券

腾讯云代金券领取渠道有哪些?腾讯云官网可以领取、官方媒体账号可以领取代金券、完成任务可以领取代金券,大家也可以在腾讯云百科蹲守代金券,因为腾讯云代金券领取渠道比较分散,腾讯云百科txybk.com专注汇总优惠代金券领取页面&am…

整合qq邮箱发送

目录 &#x1f32e;1.获取qq授权码 &#x1fad3;2.引入依赖 &#x1f9c8;3.配置mail信息 &#x1f95e;4.创建实现类 &#x1f956;5.测试 1.获取qq授权码 点击开启服务&#xff0c;发送信息获取授权码 2.引入依赖 <!--邮件--><dependency><groupId&…

(四)Android布局类型(线性布局LinearLayout)

线性布局&#xff08;LinearLayout&#xff09;&#xff1a;按照一定的方向排列组件&#xff0c;方向主要分为水平方向和垂直方向。方向的设置通过属性android:orientation设置 android:orientation 其取值有两种 水平方向&#xff1a;android:orientation"horizontal&…

Linux第80步_使用“信号量”实现“互斥访问”共享资源

1、创建MySemaphoreLED目录 输入“cd /home/zgq/linux/Linux_Drivers/回车” 切换到“/home/zgq/linux/Linux_Drivers/”目录 输入“mkdir MySemaphoreLED回车”&#xff0c;创建“MySemaphoreLED”目录 输入“ls回车”查看“/home/zgq/linux/Linux_Drivers/”目录下的文件…

程序员思维之新机遇面前如何选择

你会不会因为 AI 的爆火&#xff0c;焦虑 AI 会替代自己的工作&#xff0c;焦虑其他人躬身入局把你淘汰。 我有过&#xff0c;甚至想全部精力都去学习 ChatGPT、Stable diffusion 、 Midjourney&#xff0c;每新出来一款大语言模型就想预约体验&#xff0c;那段时间像是无头的…

简单的网页制作

1网页编写格式 <!DOCTYPE html> <html><head><meta charset"utf-8"> <title>中文测试。。。。</title></head><body>这里是测试body测试内容。。。</body> </html>2标签 在body内<h1></h1&…

二、yocto 集成ros2(基于raspberrypi 4B)

yocto 集成ros2 yocto 集成ros21. 下载ros layer2. 编译集成ros3. 功能验证 yocto 集成ros2 本篇文章为基于raspberrypi 4B单板的yocto实战系列的第二篇文章。 一、yocto 编译raspberrypi 4B并启动 本节我们将ros2机器人操作系统移植到我们的yocto系统里面。 1. 下载ros laye…

DNA存储技术原理是什么?

随着大数据和人工智能的发展&#xff0c;全球每天产生的数据量剧增&#xff0c;对存储设备的需求也随之增长&#xff0c;数据存储问题日益凸显。传统的硬盘驱动器&#xff08;HDD&#xff09;、磁带等冷存和深度归档存储占据数据中心存储的60-70%&#xff0c;由于它们的访问频率…

策略模式实战

项目推荐最近开发完成的项目中使用到了策略模式&#xff0c;实现多种支付方式&#xff0c;避免了后期支付方式if-else代码的冗余&#xff0c;也有利于后期支付的一个扩展。同时这个项目非常适合于做毕设&#xff0c;想了解这个项目的同学可以联系我QQ&#xff1a;3808898981 前…

html编辑器

HTML 编辑器推荐 html可以使用记事本编辑 但是更建议使用专业的 HTML 编辑器来编辑 HTML&#xff0c;我在这里给大家推荐几款常用的编辑器&#xff1a; VS Code&#xff1a;https://code.visualstudio.com/WebStorm: https://www.jetbrains.com/webstorm/Notepad: https://no…

命名空间——初识c++

. 个人主页&#xff1a;晓风飞 专栏&#xff1a;数据结构|Linux|C语言 路漫漫其修远兮&#xff0c;吾将上下而求索 文章目录 经典的Hello Word 起航c关键字c语言的命名冲突问题域作用限定符::命名空间 namespace命名空间定义命名空间的使用1.加命名空间名称及作用域限定符2.使用…

异常:程序出现的问题

目的&#xff1a;为了以后发现异常后怎么去处理 异常的作用

【NTN 卫星通信】 TN和多NTN配合的应用场景

1 场景描述 此场景描述了农村环境&#xff0c;其中MNO (运营商TerrA)仅在城市附近提供本地地面覆盖&#xff0c;而MNO (SatA)提供广泛的NTN覆盖。SatA使用GSO轨道和NGSO轨道上的卫星。SatA与TerrA有漫游协议&#xff0c;允许:   所有TerrA用户的连接&#xff0c;当这些用户不…

免费的chatgpt网站(包含最新版4.0)

相信每个人在生活工作学习中都逃不过用chatgpt来解决一些问题&#xff0c;下面我长话短说&#xff0c;为大家简单介绍几款免费且好用的chatgpt网站 1、YesChat 网址&#xff1a;YesChat-ChatGPT4V Dalle3 Claude 3 All in One Free 第一个就给大家介绍一个狠角色&#xff0c;最…

接口冒烟测试方法

接口冒烟测试方法 今年遇到了几个问题&#xff0c;与接口的功能和性能相关&#xff0c;恰巧最近公司也在组织以冒烟测试为主题的活动&#xff0c;于是乎突发奇想&#xff0c;寻思着能否将接口测试与冒烟测试结合起来&#xff0c;发掘一些新的接口测试思路与方法。 平时对接口…