git企业开发的相关理论(一)

目录

一.初识git

二.git的安装

三.初始化/创建本地仓库

四.配置用户设置/配置本地仓库

五.认识工作区、暂存区、版本库

六.添加文件__场景一

七.查看 .git 文件/添加到本地仓库后.git中发生的变化

1.执行git add后的变化

index文件(暂存区)

logs/HEAD文件

2.执行git commit后的变化

refs/heads/master

Objects目录

logs/HEAD文件


一.初识git

类似于qq在线文档,office里查看历史版本,Git 是一个分布式版本控制系统,用于追踪代码的变化,协作开发,并能轻松管理不同版本的代码。能像qq在线文档一样,大型多人在线编辑,office里的历史版本,可以随时回滚,对于文本文件能直接告诉你哪里发生了改动,二进制文件如图片告诉你大概的变化。

二.git的安装

1.Windows(x64): Git-2.47.1-64-bit.exe

2.Ubuntu: apt-get install git

3.macOs:  brew install git

三.初始化/创建本地仓库

git init

创建这个词便于理解,初始化才是本质。我们知道我们想要将什么放进我们的github/gitee,但计算机其实不知道,初始化其实就相当于圈了一块地,告诉计算机,将这些推送到github/gitee。

同时会生成一个.git的隐藏文件,也就是真正的本地仓库,版本库,注意尤其不允许在.git下手动修改,否则可能导致该仓库用不了

四.配置用户设置/配置本地仓库

一般配置为

git config --global user.name "xxx"
git config --global email "666666@xxxx.com"

检查其是否配置成功,只需

git config -l//    若出现下列代码,则表示配置成功
//    user.name=xxx
//    user.email=666666@xxx.com

我们的配置一般为全局配置,全局配置是指本地的所有仓库默认都采取这种用户配置,如果不采取全局配置,只需要去掉--global

git config user.name "xxx"
git config email "666666@xxxx.com"

最后,如果我们换一种配置,直接输,系统会直接覆盖,若们就是想取消所有配置,则输入以下代码,注意全局配置和局部配置不一样,有没有取消成功,再git config -l查看即可。

//    全局设置
git config --global --unset user.name
git config --global --unset user.email//    局部配置
git config --unset user.name
git config --unset user.email

五.认识工作区、暂存区、版本库

如图所示,这是在window系统中工作区,暂存区,版本库的大致分布及一些原理。

当我们git init一个仓库时,在里面添加文件,git是不能直接管理的,因为他处于工作区中。我们需要用git add .命令将其推送到.git文件所在的版本库中,实际上是stage暂存区(索引)中。这时仍然没有添加到本地仓库中,需要使用git commit -m ‘xxx’命令将其推向HEAD指向的master中,这样就算完成了。

无论是stage暂存区还是master中,存放的都是索引,具体的文件管理是在objects文件中,修改的工作内容会写入对象的一个新的git对象中

六.添加文件__场景一

//    将文件从工作区添加到暂存区,有两种办法
git add .    // 会将所有修改的文件添加到暂存区
git add <file>    // 只会将file文件添加到暂存区,可同时添加多个//    将问件从暂存区推向master
git commit -m ‘xxxx’    //xxxx最好填写其主要变化内容,方便后续管理  //    检查推送状态
git status//    查看推送日志
git log// 显示如下信息// commit 1f458c82d3760f5db667167b742c5972e7904a97 (HEAD -> master)// Author: user.name <user.email>// Date:   Mon Dec 16 22:12:31 2024 +0800// <file>
//如果认为太长,也可以一行输出
git log --pretty=oneline// 显示如下信息// 1f458c82d3760f5db667167b742c5972e7904a97 (HEAD -> master) <file>

其中commit ID是根据哈希值整出来的独一无二的,我们是通过这个进行版本的控制,每一次add操作都会想我们展示一些变化的细节,如推送了什么文件,文本文件,增加了多少行,减少了多少行之类的。

我们对单独提交文件还需注意如下几点

git add file1

git add file2

git commit -m 'text'

这样只会将file2推送到本地仓库file1不会,因为暂存区,毕竟是暂存区

此时要么add一次,commit一次

要么git add file1 file2,再commit

要么直接git add . ,然后再commit

七.查看 .git 文件/添加到本地仓库后.git中发生的变化

1.执行git add后的变化

index文件(暂存区)

记录当前暂存区的所有文件信息(包括文件的路径、修改状态和哈希值)。注意index 文件是二进制格式,你通常不能直接查看其内容。

logs/HEAD文件

logs/HEAD会记录你最近的操作,尤其是指针的变化。例如,git add 后,你可以看到这个文件记录了 HEAD(当前分支)的操作记录。当前将HEAD用记事本打开,则是以下内容

// master文件所在路径
ref: refs/heads/master

2.执行git commit后的变化

refs/heads/master

将master用记事本打开,可以清楚地看到,master中记录的是git commit后最新的哈希值

Objects目录

通过哈希值查看内容不再能使用记事本,需要用到下列命令

git cat-file -p <哈希值>

我们可以看到通过master中的哈希值,我们能得到tree(提交的整个树的节点),parent(上一个节点),和提交者的信息。通过再次检索tree,我们能得到其根目录,然后检索我们README.txt文件的哈希值,我们就能看到我们操作的具体变化。 

因此,修改的工作区内容会写入到对象库的一个新的git对象中。

logs/HEAD文件

logs/HEAD记录了你最新的提交操作。例如,在执行git commit后,logs/HEAD会记录这一操作的详细信息,包含提交的哈希值、提交人、日期等信息。

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

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

相关文章

wxpython图形用户界面编程

wxpython图形用户界面编程 一、wxpython的基础 1.1 wxpython的基础 作为图形用户界面开发工具包 wxPython&#xff0c;主要提供了如下 GUI 内容&#xff1a; 窗口。控件。事件处理。布局管理。 1.2 wxpython的类层次机构 1.3 wxpython的安装 Windows 和 macOS 平台安装&a…

水仙花数(流程图,NS流程图)

题目&#xff1a;打印出所有的100-999之间的"水仙花数"&#xff0c;并画出流程图和NS流程图。所谓"水仙花数"是指一个三位数&#xff0c;其各位数字立方和等于该数本身。例如&#xff1a;153是一个"水仙花数"&#xff0c;因为1531的三次方&#…

不配置python环境,直接用PyCharm就可以?

有的伙伴可能遇到不安装python环境只安装pycharm也可以进行运行代码。 所以自认为是不需要解释器就可以运行&#xff1f; 这个是不现实的&#xff0c;有很多伙伴可能是安装了Pycharm&#xff0c;但Pycharm看你电脑上没有解释器&#xff0c;所以在安装的时候给你默认安装在C盘…

网络安全渗透测试概论

渗透测试&#xff0c;也称为渗透攻击测试是一种通过模拟恶意攻击者的手段来评估计算机系统、网络或应用程序安全性的方法。 目的 旨在主动发现系统中可能存在的安全漏洞、脆弱点以及潜在风险&#xff0c;以便在被真正的恶意攻击者利用之前&#xff0c;及时进行修复和加固&…

爬虫数据能用于商业吗?

在当今数字化时代&#xff0c;数据已成为企业获取竞争优势的关键资源。网络爬虫作为一种数据收集工具&#xff0c;能够从互联网上抓取大量数据&#xff0c;这些数据在商业分析中扮演着重要角色。然而&#xff0c;使用爬虫技术获取的数据是否合法、能否用于商业分析&#xff0c;…

前端面试汇总(不定时更新)

目录 HTML & CSS1. XML、HTML、XHTML 有什么区别&#xff1f;⭐2. XML和JSON的区别&#xff1f;3. 是否了解W3C的规范&#xff1f;⭐4. 什么是语义化标签&#xff1f;⭐⭐5. 行内元素和块级元素的区别&#xff1f;⭐6. 行内元素和块级元素的转换&#xff1f;⭐7. 常用的块级…

SpringCloud微服务实战系列:03spring-cloud-gateway业务网关灰度发布

目录 spring-cloud-gateway 和zuul spring webflux 和 spring mvc spring-cloud-gateway 的两种模式 spring-cloud-gateway server 模式下配置说明 grayLb://system-server 灰度发布代码实现 spring-cloud-gateway 和zuul zuul 是spring全家桶的第一代网关组件&#x…

QT3学习之进阶理解信号和槽:如何自定义一个类信号,供其它类调用槽函数

下面是QWidget源码&#xff0c;定义了两个事件 /*!This event handler can be reimplemented in a subclass to receivewidget enter events.An event is sent to the widget when the mouse cursor enters thewidget.\sa leaveEvent(), mouseMoveEvent(), event() */void QWi…

GaLore和Q-GaLore:一种记忆高效的预训练和微调策略,用于大型语言模型(LLMs)

GaLore和Q-GaLore&#xff1a;一种记忆高效的预训练和微调策略&#xff0c;用于大型语言模型&#xff08;LLMs&#xff09; GaLore和Q-GaLore的设计背景、工作原理及其优势 设计背景 随着大型语言模型&#xff08;LLMs&#xff09;的发展&#xff0c;模型的规模和复杂性不断…

【网络云计算】2024第51周-每日【2024/12/17】小测-理论-解析

文章目录 1. 计算机网络有哪些分类2. 计算机网络中协议与标准的区别3. 计算机网络拓扑有哪些结构4. 常用的网络设备有哪些&#xff0c;分属于OSI的哪一层5. IEEE802局域网标准有哪些 【网络云计算】2024第51周-每日【2024/12/17】小测-理论-解析 1. 计算机网络有哪些分类 计算…

ActiveMQ 反序列化漏洞CVE-2015-5254复现

文章目录 一、产生原因二、利用条件三、利用过程四、PoC&#xff08;概念验证&#xff09;五、poc环境验证使用find搜索vulhub已安装目录打开activeMQ组件查看配置文件端口启动镜像-文件配置好后对于Docker 镜像下载问题及解决办法设置好镜像源地址&#xff0c;进行重启docker查…

shardingsphere分库分表跨库访问 添加分片规则

shardingsphere分库分表跨库访问 添加分片规则 建立 JDBC 环境 创建表 t_order&#xff1a; CREATE TABLE t_order (tid bigint(20) NOT NULL,tname varchar(255) DEFAULT NULL,goods_id bigint(20) DEFAULT NULL,tstatus varchar(255) DEFAULT NULL,PRIMARY KEY (tid) ) E…

C++ 中,构造函数、拷贝构造函数和移动构造函数区别

在 C 中&#xff0c;构造函数、拷贝构造函数和移动构造函数是类中用于对象初始化的三种不同类型的构造函数。它们的功能和使用场景有所不同&#xff0c;下面详细解释它们之间的区别。 1. 构造函数 (Constructor) 定义&#xff1a; 构造函数是一个特殊的成员函数&#xff0c;用…

MYSQL执行一条update语句,期间发生了什么

客户端先通过连接器建立连接&#xff0c;连接器自会判断用户身份&#xff1b; 因为这是一条 update 语句&#xff0c;所以不需要经过查询缓存&#xff0c;但是表上有更新语句&#xff0c;是会把整个表的查询缓存清空的&#xff0c;所以说查询缓存很鸡肋&#xff0c;在 MySQL 8…

vue3监听横向滚动条的位置;鼠标滚轮滑动控制滚动条滚动;监听滚动条到顶端

1.横向取值scrollLeft 竖向取值scrollTop 2.可以监听到最左最右侧 3.鼠标滚轮滑动控制滚动条滚动 效果 <template><div><div class"scrollable" ref"scrollableRef"><!-- 内容 --><div style"width: 2000px; height: 100…

深入理解MyBatis的Mapper层:让数据访问更高效

目录 1. 什么是MyBatis的Mapper层&#xff1f; 1.1 典型的Mapper层结构 1.2 示例&#xff1a;一个简单的用户管理系统 2. 创建Mapper层 2.1 创建实体类 2.2 创建Mapper接口 2.3 创建Mapper XML文件&#xff08;可选&#xff09; 2.4 配置MyBatis的SQL映射 3. 使用Mapp…

WPF xaml 文件详解

<div id"content_views" class"htmledit_views"><h2><a name"t0"></a>1.总述</h2> 创建好了WPF项目后&#xff0c;最重要的是对 App和MainWindow的理解&#xff0c;在一开始的时候&#xff0c;极容易就直接在Main…

鸿蒙开发-ArkTS 创建自定义组件

在 ArkTS 中创建自定义组件是一个相对简单但功能强大的过程。以下是如何在 ArkTS 中创建和使用自定义组件的详细步骤&#xff1a; 一、定义自定义组件 使用Component注解&#xff1a;为了注册一个组件&#xff0c;使其能够在其他文件中被引用&#xff0c;你需要使用Component…

Golang学习笔记_05——延迟调用

Golang学习笔记_02——函数 Golang学习笔记_03——匿名函数和闭包 Golang学习笔记_04——递归函数 文章目录 延迟调用1. 延迟调用1.1 使用场景1.2 示例 2. panic2.1 使用场景2.2 示例 3. recover3.1 使用场景3.2 示例 源码 延迟调用 在Go语言中&#xff0c;延迟调用&#xff0…

防范TCP攻击:策略与实践

TCP&#xff08;传输控制协议&#xff09;是互联网通信的核心协议之一&#xff0c;它确保了数据在网络上的可靠传输。然而&#xff0c;TCP也容易成为各种网络攻击的目标&#xff0c;如SYN洪水攻击、TCP连接耗尽攻击等。本文将探讨如何通过配置防火墙规则、优化服务器设置以及采…