首页 > 其他分享 >5、Git之版本号

5、Git之版本号

时间:2024-06-07 20:11:22浏览次数:25  
标签:文件 Git 版本号 提交 所示 如上图 分支

5.1、概述

每一次提交,Git 都会生成相关的版本号;每个版本号由 40 位 16 进制的数字组成。

这 40 位 16 进制的数字,是根据提交的内容,通过 SHA-1 算法计算出来的。

版本号具体还分为两部分,前 2 位是目录名,后 38 位是文件名。

5.2、文件操作

5.2.1、初始化本地库

image

如上图所示,刚创建的 Git 本地仓库没有提交信息,也没有版本号。

5.2.2、新增文件并提交

image

如上图所示,新增文件并提交后,通过 git reflog 命令可以查到对应的(精简)提交版本号:7896eb8

注意:本文使用精简的版本号演示,需要查看完整的版本号,请参考3.9.2节

5.2.3、根据版本号查找第一次提交的文件

image

因为版本号的前 2 位是目录名,后 38 位是文件名;所以可以快速定位出文件所在的位置。

image

如上图所示,直接打开文件时,内容是一堆乱码。

image

git cat-file -p 版本号

如上图所示,使用命令行指令才能读取版本号对应的文件内容。

可以看到,该文件内容并没有提交的文件的内容信息,但有另一个版本号。

image

如上图所示,读取上文发现的新版本号,还是没有提交的文件的内容信息,但又有新的版本号,而且对应提交的文件的名称。

image

如上图所示,读取上文发现的新版本号,可以看到了提交的文件的内容信息。

5.2.4、第一次提交的版本号图解

image

如上图所示,提交日志中的版本号所对应的文件,包含的内容是状态信息的版本号;

状态信息的版本号所对应的文件,包含的内容是本次提交版本的全部文件的版本号。

5.2.5、修改文件并提交

image

如上图所示,修改文件并提交后,通过 git reflog 命令可以查到对应的(精简)提交版本号:774e05f

5.2.6、根据版本号查找第二次提交的文件

image

如上图所示,根据第二次提交的版本号,可以查出本次提交的状态信息的版本号(tree)和上一次(即第一次)提交的版本号(parent)。

image

如上图所示,根据状态信息的版本号,可以查出本次提交版本的全部文件的版本号。

注意:修改后的a.txt文件的版本号已经变了,没有修改的b.txt文件的版本号和原来的一样。

image

如上图所示,修改后的a.txt文件的内容已经从“111”变为“333”了,没有修改的b.txt文件的内容还是原来的“222”。

5.2.7、第二次提交的版本号图解

image

如上图所示,所谓的修改文件,实质是新增了一个版本号不同但名称相同的文件,然后再新增一个状态版本用来记录新的文件版本号列表。

实际上,原来的文件还存在,这也是为什么能实现版本回退(穿梭)的原因。

5.2.8、删除文件并提交

image

image

如上图所示,删除文件并提交后,通过 git reflog 命令可以查到对应的(精简)提交版本号:a140418

5.2.9、根据版本号查找第三次提交的文件

image

如上图所示,根据第三次提交的版本号,可以查出本次提交的状态信息的版本号(tree)和上一次(即第二次)提交的版本号(parent)。

image

如上图所示,根据状态信息的版本号,可以查出本次提交版本的全部文件的版本号。

注意:已删除的b.txt文件的版本号已经没了,没删除的a.txt文件的版本号还在。

image

5.2.10、第三次提交的版本号图解

image

如上图所示,所谓的删除文件,实质是新增一个状态版本用来记录新的文件版本号列表。

实际上,原来的文件还存在,这也是为什么能实现版本回退(穿梭)的原因。

5.3、分支操作

5.3.1、HEAD文件

image

HEAD文件中,记录了当前分支版本文件(本例为 master 分支)的路径。

5.3.2、master分支版本文件

image

master分支版本文件中,记录了该分支的最新提交版本号。

5.3.3、master分支版本图解

image

5.3.4、创建新分支user

image

如上图所示,创建新分支user后,也多了一个分支版本文件user。

image

如上图所示,新创建的user分支版本文件中记录的该分支的最新提交版本号,和master分支版本文件记录的别无二致。

5.3.5、新创建的user分支版本图解

image

5.3.6、切换到user新分支

image

image

如上图所示,切换到user分支后,HEAD文件中记录的当前分支版本文件的路径是user分支版本文件的路径。

5.3.7、切换后的user分支版本图解

image

5.3.8、user分支新增文件并提交

image

image

如上图所示,user分支新增文件并提交后,user分支版本文件中记录的该分支的最新提交版本号,和master分支版本文件记录的不一样了。

5.3.9、新增文件后的user分支版本图解

image

5.3.10、切换回master分支

image

如上图所示,切换回master分支后,HEAD文件中记录的当前分支版本文件的路径是master分支版本文件的路径。

image

此外,master分支的工作目录中,并没有显示在user分支时新增的c.txt文件,说明在user分支的操作不会影响到master分支。

5.3.11、切换回的master分支版本图解

image

标签:文件,Git,版本号,提交,所示,如上图,分支
From: https://www.cnblogs.com/Javaer1995/p/17972714

相关文章

  • 【Git】Git 的基本操作 -- 详解
    一、创建Git本地仓库要提前说的是,仓库是进行版本控制的一个文件目录。我们要想对文件进行版本控制,就必须先创建一个仓库出来。创建⼀个Git本地仓库对应的命令为gitinit,注意命令要在文件目录下执行,例如:我们发现,当前目录下多了一个.git的隐藏文件,.git目录是Git来......
  • GitHub飙升!京东认证的“Python编程入门三剑客”究竟好在哪?
    Python凭借着简单易学、功能强大,已经跃居TIOB编程语言榜首,并且已经开始了它的霸榜之旅。如何选择一套适合自己的Python学习教程,是每个Python爱好者面临的首要问题。今天给小伙伴们带来的是图灵&京东认证的“Python编程入门三剑客”,先看《Python编程从入门到实践》,打好Python入......
  • GitHub狂揽6700 Star,Python进阶必备的案例、技巧与工程实践
    当下是Python急剧发展的时代,越来越多的人开始学习和使用Pyhon,而大家也遇到了各种问题。这份手册清晰、细致地介绍了Python代码应该遵循的编程风格,并解释了背后的原理和机制。入门Python语言相对简单,但写出优雅的代码并非易事。这份手册深入讲解了Python进阶知识的方方......
  • 开山之作!Python数据与算法分析手册,登顶GitHub!
    若把编写代码比作行军打仗,那么要想称霸沙场,不能仅靠手中的利刃,还需深谙兵法。Python是一把利刃,数据结构与算法则是兵法。只有熟读兵法,才能使利刃所向披靡。只有洞彻数据结构与算法,才能真正精通Python。今天给小伙伴们分享的这份手册,是用Python描述数据结构与算法的开山之作,......
  • 新仓库怎么传git
    1.生成SSH密钥: 在本地安装的git目录下,启动git-bash.exe启动的git的命令中输入ssh-keygen -trsa 并一直回车到最后在路径中找到 .ssh/id_rsa.pub文件里面的密钥既为SSH密钥最后再在Github仓库里SSHKeys中写入即可2.创建仓库在目标位置上打开cmd然后输入gitinit......
  • JAVA开发之git安装
    一、官网下载https://git-scm.com/二、下载安装程序后直接点击下载下一步,下一步完成三、完成后下载代码鼠标右键会有,git-bash功能菜单选项,然后就可以使用git相关命令查看文件状态gitstatus查看文件改动详情gitdiff添加所有文件到暂存区gitadd.添加指定文件到暂存......
  • Gitlab全家桶(安装|升级|卸载|备份|恢复)
    通用命令sudogitlab-ctlstart#启动所有gitlab组件;sudogitlab-ctlstop#停止所有gitlab组件;sudogitlab-ctlrestart#重启所有gitlab组件;sudogitlab-ctlstatus#查看服务状态;sudogitlab-ctlreconfigure#启动服务;sudovim/etc/gitlab/gitlab.rb#......
  • GitHub Pages托管Vue3+Vite项目
    前面都没有问题的兄弟,可以直接跳到第七步一、创建一个Vue3+Vite项目并运行1.创建npmcreatevue@latest可以根据自己的需求进行选择2.安装依赖npmi3.运行npmrundev二、修改vite.config.js文件在此文件中,defineConfig中加入base参数,具体如下:exportde......
  • Github Discussions使用指南(建议收藏)
    序言之所以想着翻译这篇文章,是因为我看到国内不管是开源爱好者,还是开发者都不怎么了解GithubDiscussions,以致于在Github仓库中提问时,总是忘记使用这个好东西,或者问错地方。翻译自:WhatisGitHubDiscussions?Acompleteguide引言GitHubDiscussions可将社区论坛直接......
  • 前端工程化工具系列(八)——Commitizen(v4.3.0):Git提交规范化工具
    在前端工程化工具系列(四)——Commitlint(v19.3.0):规范化Git提交中曾介绍过commitlint,它主要负责检查提交信息的规范性。而本文中的commitizen,则是提供给了一个交互式的命令行界面,引导开发者按照预定义的格式填写提交信息。它俩的目的都是规范git提交。按照使用习惯......