首页 > 其他分享 >Git(图文介绍)

Git(图文介绍)

时间:2023-10-25 17:12:38浏览次数:29  
标签:文件 git repository 更改 介绍 Git branch commit 图文

Git

​ Git是一个分布式版本控制系统,其是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。

Git 数据类型
  • repository

    repository是文件的集合,通常包含一些特定项目相关的更改历史记录以及一个或多个包含代码或文档的文件

  • blob和tree

    git中的任何类型的文件都是blob,目录是一个tree,一个tree由tree和blob组成,如下图所示:

  • commit

    commit就类似对当前的repository做一个快照,其捕获完整的某个时间点的项目状态,repository的更改历史记录由不同时间点的commit组成。commit操作过程可以用下图来表示:

  • object

    object在git中指的是blob、tree、commit,其所有object都有一个唯一地址,git通过该地址来区分object中存储的内容

git 操作类型
  • branch

    branch通常指向一个特殊的commit,branch就好像电视剧中的多条故事线,其主线是main(或者master),我们从主线main(或master)中创建一个新的branch来添加某些功能或者错误,这样能够在不干扰主线的情况下试验代码。

  • merge

    merge就是将一个branch的改动合并到另一个branch中。假如我们现在有这样的主线:

我们新建了一个branch,添加了一些代码以及修复了一些bug:

使用merge,能将branch1的改动合并到主线中去,这样主线就会出现merge后的commit,也就是相当于新的版本:

  • clone

    clone会创建一个远程的repository的文件的副本并保存在自己本地的计算机上,在clone的时候,不仅会下载一些文件以及目录,还有从创建以来所有的更改记录,但是当我们clone之后的更新将不会自动同步到我们本地的计算机上

  • pull

    pull的意思是将远程repository的更新同步到本地计算机上,因为在上面的clone讲了,在clone之后的更新将不会自动同步到我们本地的计算机上。

  • push

    push的含义与pull相似,只不过其是将自己本地计算机上的更改同步到远程的repository中。

git 文件的生命循环

​ 在git的repository内,文件通常有两种状态:已跟踪的和未跟踪的,已跟踪的就是git知道的,未跟踪的就是git不知道的。已跟踪的文件又有三种状态:未更改的、已更改的以及缓存的。

​ 当创建了一个新的文件在git的repository内,其刚开始是未跟踪状态,我们需要让git知道它的存在,需要使用add指令加入到repository中,add指令会将其放在缓冲区。

​ 在我们需要去对文件进行修改的时候,我们需要创建一个commit,刚创建的时候,其所有文件都是未修改的:

​ 现在我们对文件做一些编辑与修改,此时文件处于被修改状态,但是其还未缓存,git知道其已经被更改,但是这些更改还未提交到repository中:

​ 可以使用add指令,将这些更改的文件提交到缓存区:

协作工作流程

​ 首先我们会拥有一个自己的工作目录,我们在工作目录里做一些编辑之后,按前面说的,先将文件add到缓冲区,再将其commit到自己的本地仓库,再接着使用push指令,将其变动同步到远程仓库,同样也可以使用pull指令,将远程仓库的变动同步到自己的仓库。

分布式工作流程

​ 分布式其实就是多个成员对同一个远程仓库进行上述工作流程如图所示:

标签:文件,git,repository,更改,介绍,Git,branch,commit,图文
From: https://www.cnblogs.com/mjyrise/p/17787648.html

相关文章

  • 软件测试|pycharm关联GitHub的详细步骤
    简介GitHub是全球最大的开源代码托管平台之一,而PyCharm是一款强大的Python集成开发环境。将两者结合使用,可以提高团队协作和代码管理的效率。本文将详细介绍如何在PyCharm中管理GitHub账号,包括如何设置GitHub账号、创建新仓库、克隆现有仓库、提交和推送代码等。环境准......
  • springboot 06 idea提交到Gitee
         --->commit   首次要填Gitee的账号密码  ......
  • Net 高级调试之二:CLR和Windows加载器及应用程序域介绍
    一、简介今天是Net高级调试的第二篇文章,第一篇文章记录了自己学习Net高级调试的第一步,认识一些调试工具,有了工具的倚仗,我们开始仗剑走天涯了,开始Net高级调试正式的征程了。我先说一下,我的文章,【调试测试】这部分一般分为两个部分,第一部分是要用到的所有测试代码样例,......
  • [粘贴]github-redis-rdb-cli
    redis-rdb-cliAtoolthatcanparse,filter,split,mergerdbandanalyzememoryusageoffline.Itcanalsosync2redisdataandallowuserdefinethereownsinkservicetomigrateredisdatatosomewhere.  ChatwithauthorContracttheauthorBinaryreleas......
  • win10_Git基于WSL(Linux子系统)统计代码行数命令
    win10_Git基于WSL(Linux子系统)统计代码行数命令一、引言找到的基于git统计代码行数的命令,一般都是基于linux系统的shell命令。在使用mac电脑或者linux系统开发时,执行这些命令比较方便。但是还有大部分人是使用windows做开发,这时就遇到麻烦了,因为基于shell的统计命令不能在windows系......
  • 用git stash暂存修改
    gitstash命令用于保存当前工作目录的临时状态,包括暂存区和已修改但未暂存的文件。它会将这些修改保存在一个临时区域(即“堆栈”)中,让你能够回到一个干净的工作目录,可以进行其他操作。等到你完成其他任务后,可以再回到之前的状态,继续之前的开发。使用场景切换分支:当你正在开发一个功......
  • 后浪搞的在线版 Windows 12「GitHub 热点速览」
    本周比较火的莫过于3位初中生开源的Windows12网页版,虽然项目完成度不如在线版的Windows11,但是不妨一看。除了后生可畏的win12之外,开源不到一周的open-interpreter表现也很抢眼,一个在终端就能使唤的AI助手获得了15k+star。还有深度开源的deepin-unioncodeIDE表现......
  • STL之set和map使用介绍(六千字长文详解)
    set和map介绍基础概念关联式容器像是vector,list,deque,forward_list这些都是属于==序列式容器==!因为其底层为线性序列的数据结构,里面存储的是元素本身。而map和set是属于==关联式容器==!什么是关联式容器?关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存储的是结构的<......
  • 国内访问Github的方法
    简要修改hosts文件,达到绕过国内DNS解析的目的,提升Github访问速度。查询IP通过以下网站https://www.ipaddress.com/http://ping.chinaz.com/直接查询如下网站的IP地址github.comassets-cdn.github.comgithub.global.ssl.fastly.net修改hosts文件hosts文件的位置在(wind......
  • 关于高级定时器 重复计数值寄存器的使用介绍
    来源:https://www.cnblogs.com/liaigu/p/17782198.html在使用高级定时器进行初始化的时候,相较于通用定时器,在初始化的时候会有一个重复计数的配置,如下图:该位主要是对重复计数值寄存器进行配置,如下图:关于该配置的使用说明,具体如下:以定时器中断为例:1、一般默认情况下,将重复计......