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

news2024/12/23 20:28:53

目录

一.初识git

二.git的安装

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

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

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

六.添加文件__场景一

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

1.执行git add后的变化

index文件(暂存区)

logs/HEAD文件

2.执行git commit后的变化

refs/heads/master

Objects目录

logs/HEAD文件

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


一.初识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会记录这一操作的详细信息,包含提交的哈希值、提交人、日期等信息。

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

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

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

相关文章

Linux网络——网络基础

Linux网络——网络基础 文章目录 Linux网络——网络基础一、计算机网络的发展背景1、网络的定义&#xff08;1&#xff09; 独立模式&#xff08;2&#xff09;网络互联 2、局域网 LAN3、广域网 WAN4、比较局域网和广域网5、扩展 —— 域域网和互联网 二、协议1、协议的概念2、…

react中实现导出excel文件

react中实现导出excel文件 一、安装依赖二、实现导出功能三、自定义列标题四、设置列宽度五、样式优化1、安装扩展库2、设置样式3、扩展样式功能 在 React 项目中实现点击按钮后导出数据为 Excel 文件&#xff0c;可以使用 xlsx 和 file-saver 这两个库。 一、安装依赖 在项目…

7-Zip 加密功能使用教程:如何设置密码保护压缩文件

压缩包如何加密&#xff1f;7-Zip 是一款开源的文件归档工具&#xff0c;支持多种压缩格式&#xff0c;并提供了对压缩文件进行加密的功能。使用 7-Zip 可以轻松创建和解压 .7z、.zip 等格式的压缩文件&#xff0c;并且可以通过设置密码来保护压缩包中的数据不被未授权访问。 准…

[计算机网络]ARP协议的故事:小明找小红的奇妙旅程

1.ARP小故事 在一个繁忙的网络世界中&#xff0c;每个设备都有自己的身份标识——MAC地址&#xff0c;就像每个人的身份证号码一样。在这个故事里&#xff0c;我们的主角小明&#xff08;主机&#xff09;需要找到小红&#xff08;目标主机&#xff09;的MAC地址&#xff0c;才…

新版国标GB28181设备端Android版EasyGBD支持国标GB28181-2022,支持语音对讲,支持位置上报,开源在Github

经过近3个月的迭代开发&#xff0c;新版本的国标GB28181设备端EasyGBD安卓Android版终于在昨天发布到Github了&#xff0c;最新的EasyGBD支持了国标GB28181-2022版&#xff0c;还支持了语音对讲、位置上报、本地录像等功能&#xff0c;比原有GB28181-2016版的EasyGBD更加高效、…

McDonald‘s Event-Driven Architecture 麦当劳事件驱动架构

原文链接 1 mcdonalds-technical-blog/ 原文链接 2 mcdonalds-technical-blog/ 麦当劳在异步、事务性和分析性处理用例中使用跨技术栈的事件&#xff0c;包括移动订单进度跟踪和向客户发送营销通信&#xff08;交易和促销&#xff09;。 统一事件平台&#xff08;unified eve…

【CSS in Depth 2 精译_089】15.2:CSS 过渡特效中的定时函数

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第五部分 添加动效 ✔️【第 15 章 过渡】 ✔️ 15.1 状态间的由此及彼15.2 定时函数 ✔️ 15.2.1 定制贝塞尔曲线 ✔️15.2.2 阶跃 ✔️ 15.3 非动画属性 文章目录 15.2 定时函数 Timing function…

一个开源的自托管虚拟浏览器项目,支持在安全、私密的环境中使用浏览器

大家好&#xff0c;今天给大家分享一个开源的自托管虚拟浏览器项目Neko&#xff0c;旨在利用 WebRTC 技术在 Docker 容器中运行虚拟浏览器&#xff0c;为用户提供安全、私密且多功能的浏览体验。 项目介绍 Neko利用 WebRTC 技术在 Docker 容器中运行虚拟浏览器&#xff0c;提供…

AW36518芯片手册解读(3)

接前一篇文章&#xff1a;AW36518芯片手册解读&#xff08;2&#xff09; 二、详述 3. 功能描述 &#xff08;1&#xff09;上电复位 当电源电压VIN降至预定义电压VPOR&#xff08;典型值为2.0V&#xff09;以下时&#xff0c;该设备会产生复位信号以执行上电复位操作&#x…

浅谈目前我开发的前端项目用到的设计模式

浅谈目前我开发的前端项目用到的设计模式 前言 设计模式很多&#xff0c;看到一个需求&#xff0c;项目&#xff0c;我们去开发的时候&#xff0c;肯定是做一个整体的设计进行开发&#xff0c;而在这次我项目中&#xff0c;我也做了一个整体的设计&#xff0c;为什么要设计&a…

线性规划中的几种逻辑表达式

线性规划中的几种逻辑表达式 注意&#xff1a; 摘录字刘博士的《数学建模与数学规划》&#xff0c; 以便用时可查。 实际上Gurobi API 中自身放啊变的逻辑表达式函数&#xff0c;下面列出自定义的实现方式。 1 逻辑与 如果 x 1 1 x_1 1 x1​1, x 2 1 x_2 1 x2​1, 那…

JVM对象分配内存如何保证线程安全?

大家好&#xff0c;我是锋哥。今天分享关于【JVM对象分配内存如何保证线程安全&#xff1f;】面试题。希望对大家有帮助&#xff1b; JVM对象分配内存如何保证线程安全&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在JVM中&#xff0c;对象的内存分配…

Antd react上传图片格式限制

限制分辨率&#xff08;像素&#xff09; <a-upload :before-upload"beforeUpload">// 上传图片宽高比例限制const beforeUpload file > {return new Promise((resolve, reject) > {// // 图片类型限制// let isJpgOrPng file.type image/png || fil…

基于 iAP2 协议 的指令协议,用于对安防设备的 MCU 进行操作

协议设计目标 1. 安全性&#xff1a;通过 iAP2 协议与 MCU 设备进行安全通信。 2. 通用性&#xff1a;支持对安防设备的常见功能进行操作&#xff0c;如状态查询、设备控制、参数配置等。 3. 高效性&#xff1a;数据结构简洁清晰&#xff0c;易于解析和扩展。 4. 扩展性&#x…

Type-C单口便携屏LDR6021

随着科技的飞速发展&#xff0c;便携式电子产品在我们的日常生活中扮演着越来越重要的角色。在这一背景下&#xff0c;Type-C单口便携显示器作为一种新兴的显示设备&#xff0c;凭借其独特的优势迅速崭露头角&#xff0c;成为市场的新宠。本文将深入探讨Type-C单口便携显示器的…

Ubuntu 20.04 卸载和安装 MySQL8.0

卸载 首先&#xff0c;检查一下系统安装的软件包有哪些&#xff0c;使用dpkg -l | grep mysql命令&#xff1a; 为了将MySQL卸载干净&#xff0c;这些文件都需要被删除。 在Ubuntu20.04系统下&#xff0c;卸载干净MySQL8.0以确保下一次安装不会出错&#xff0c;可以按照以下…

NOTEBOOK_11 汽车电子设备分享(工作经验)

汽车电子设备分享 摘要 本文主要列出汽车电子应用的一些实验设备和生产设备&#xff0c;部分会给予一定推荐。目录 摘要一、通用工具&#xff1a;二、测量与测试仪器2.1测量仪器2.2无线通讯测量仪器2.3元器件测试仪2.4安规测试仪2.5电源供应器2.6电磁兼容测试设备2.7可靠性环境…

黑马Java面试教程_P8_并发编程

系列博客目录 文章目录 系列博客目录前言1.线程的基础知识1.1 线程和进程的区别&#xff1f;难2频3面试文稿 1.2 并行和并发有什么区别&#xff1f; 难1频1面试文稿 1.3 创建线程的四种方式 难2频4面试文稿 1.4 runnable 和 callable 有什么区别 难2频3面试文稿 1.5 线程的 run…

【活动邀请·深圳】深圳COC社区 深圳 AWS UG 2024 re:Invent re:Cap

re:Invent 是全球云计算领域的顶级盛会&#xff0c;每年都会吸引来自世界各地的技术领袖、创新者和实践者汇聚一堂&#xff0c;分享最新的技术成果和创新实践&#xff0c;深圳 UG 作为亚马逊云科技技术社区的重要组成部分&#xff0c;将借助 re:Invent 的东风&#xff0c;举办此…

一起学Git【第二节:创建版本库】

创建库 这个库相当于一个目录&#xff0c;目录中的文件都被Git管理&#xff0c;会记录每个文件的修改删除和添加工作&#xff0c;便于之后随时跟踪历史记录还原到之前的某一版本。如何创建库呢&#xff1f;有两种方式&#xff0c;本地创建库和云端克隆一个库。 1.本地创建库 …