0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Git是什么

汽车电子技术 来源:嵌入式之入坑笔记 作者: 嵌入式之入坑笔记 2023-02-10 11:23 次阅读

Git是一个免费的、开源的分布式版本控制系统,可以用于记录一个或者若干个文件内容的变化,方便查阅或者修改。

Git官网:https://git-scm.com/

1、常见的版本控制系统

1.1、集中式版本控制系统(SVN、CVS、perforce)

集中式版本控制系统的示意图如下:

pYYBAGPluGiAFKQ0AACuICnLywg720.png

特点:

1)一定会有一个中央服务器;

2)优点在于所有用户都可以看到最新更新的文件或者记录,管理员也很方便掌握每个人的权限;

3)缺点是如果中央服务器出故障的时候,所有用户都不能进行上传、下载、更新等;

1.2、分布式版本控制系统(Git、BitKeeper)

分布式版本控制系统的示意图如下:

poYBAGPluH2ADkVOAAC17Slukic083.png

每个客户端都有备份和记录,大家都可以查看到版本记录和修改以后的记录。

分布式版本控制系统存放的不是版本与版本之间的差异,而是版本的索引

2、Git的工作区、暂存区、版本库

使用Git时对其工作区、暂存区和版本库这三个的概念是很有必要了解的,了解这三个概念有助于对Git的工作过程有一个比较明确的认知。那这三个概念都是些什么意思呢?

1)工作区:

就是在电脑上能看到的目录或者文件。简单而言就是你的本地文件。

2)暂存区(stage 或 index):

一般存放在

.git

目录下的 index 文件(.git/index)中,所以也可以把暂存区叫作索引(index)。

3)版本库:

工作区中有一个隐藏目录.git,这个不算工作区,而是 Git 的版本库。

工作区、版本库中的暂存区和版本库之间的关系如下图所示:

poYBAGPluImADhsaAAIiXOV64j0627.png

上图中左侧为工作区,右侧为版本库。在版本库中标记为 "index" 的区域是暂存区(stage/index),标记为 "master" 的是 master 分支所代表的目录树。

上图中可以看到,此时 "HEAD" 实际是指向 master 分支的一个"指针"。所以图中的命令中出现 HEAD 的地方是可以用 master 来替换。

上图中的 objects 标识的区域为 Git 的对象库,位于 ".git/objects" 目录下,里面包含了创建的各种对象及内容。

2.1、一些指令执行时所存在的关联

2.1.1、向暂存区追加文件。

 git add xxx

使用 git add 命令时,是对工作区修改(或新增)的文件进行操作的,会将暂存区的目录树更新。

同时,工作区修改(或新增)的文件内容会被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。

2.1.2、暂存区文件上传版本库。

git commit -m "描述"

当执行提交操作

git commit

时,会将暂存区的目录树写到版本库中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。

2.1.3、版本回退。

git reset HEAD

当执行

git reset HEAD

命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。

2.1.4、删除文件。

git rm --cached 

1)当执行

git rm --cached

命令时,会直接从暂存区删除文件,工作区则不做出改变。

2.1.5、检出文件

git checkout .  或  git checkout -- 

1)当执行

git checkout .

会用暂存区全部的文件替换工作区的文件。或者

git checkout --

命令时,会用暂存区指定的文件替换工作区的文件。这个操作是很危险,会清除工作区中未添加到暂存区的改动。

git checkout HEAD .  或者  git checkout HEAD 

2)当执行

git checkout HEAD .

会用 HEAD 指向的 master 分支中的全部文件替换暂存区和以及工作区中的文件。或者

git checkout HEAD

命令时,会用 HEAD 指向的 master 分支中的部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。

3、代码托管中心

除了本地库可以保存版本的信息以外,为了更加方便使用,可以在代码托管平台中创建远程库,将本地库和远程库建立连接,实现远程协同的开发。它的好处有:

1)方便团队内部合作开发项目、共同项目管理;

2)方便跨团队之间的项目开发合作,使得不同公司、组织之间的合作开发可以方便的进行。

4、Git的工作流程

Git的工作流程可以归纳如下图所示:

pYYBAGPluJiAYIVIAAD8WGFyFxE087.png

总的来说:Git是一个很方便的代码托管平台,使用者可以在远程服务器上建立属于自己的项目资源管理库,实现远程和本地的资源同步,本地添加、修改的文件可以及时更新到远程服务器上保存管理。同时也可以便利于多人协作开发,及时更新最新的资源库文件当本地的工作区,及时知晓最新的更新进度,加快开发的进度。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制系统
    +关注

    关注

    41

    文章

    5966

    浏览量

    108749
  • 开源
    +关注

    关注

    3

    文章

    2991

    浏览量

    41723
  • Git
    Git
    +关注

    关注

    0

    文章

    193

    浏览量

    15420
收藏 人收藏

    评论

    相关推荐

    Git常用的超级实用命令

    Git作为最流行的代码版本控制工具,基本上已经成为了程序员的一个标配技能。无论使用GitHub,GitLib,Gitee等进行代码托管,均基于Git。下面聊一聊开发人员必会的几个Git技巧和团队协作
    的头像 发表于 10-09 17:19 919次阅读
    <b class='flag-5'>Git</b>常用的超级实用命令

    git命令的基本使用

    git config 第一次使用git或者刚安装的git时,使用此命令设置身份Name 和 Eamail 地址。并且每次提交时会使用此信息。
    的头像 发表于 12-11 13:53 577次阅读

    Git是什么?Git的基本使用资料说明

      Git是什么? Git是目前世界上最先进的分布式版本控制系统(没有之一)。
    发表于 05-29 17:56 1次下载
    <b class='flag-5'>Git</b>是什么?<b class='flag-5'>Git</b>的基本使用资料说明

    腾讯是如何使用Git

    那么,切换到 git 来维护代码仓库,会对我们的日常开发造成影响吗?答应是显然的,首先我们需要学习 git 的基本概念与用法,然后就需要我们在具体的项目实践过程中打磨我们的 git 使用技巧
    的头像 发表于 08-10 15:02 2245次阅读
    腾讯是如何使用<b class='flag-5'>Git</b>?

    Git 命令+原理 程序员必备的基础

    掌握Git命令是每位程序员必备的基础,之前一直是用smartGit工具,直到看到大佬们都是在用Git命令操作的,回想一下,发现有些Git命令我都忘记了,于是写了这篇博文,复习一下~ 文章目录
    的头像 发表于 11-14 10:01 1526次阅读
    <b class='flag-5'>Git</b> 命令+原理 程序员必备的基础

    7个实用的Git 小技巧

    这些有用的小技巧将改变你在当前最流行的版本控制系统下的工作方式。 Git 是当前最流行最普遍的版本控制系统之一,它被应用于私有系统和公开网站上各种各样的开发工作。不论我变得对 Git 有多熟悉,似乎
    的头像 发表于 07-29 10:22 1191次阅读

    Git权威指南

    Git管理资料,方便大家学习git知识
    发表于 06-29 14:15 0次下载

    利用Learn Git Branching轻松学习Git

    Git作为世界上最流行的版本控制系统,可以说是每一位与程序打交道的朋友最值得学习的软件之一。除了管理自己的项目,如果你对参与开源项目感兴趣,那么Git更是联结Github、Gitlab等知名代码项目
    的头像 发表于 09-15 14:53 1227次阅读

    Git的使用

    Git的使用
    的头像 发表于 01-10 16:45 744次阅读

    Git是怎样的一个系统 Git的工作原理

    执行完成了 git commit 命令,究竟做了什么呢? Git 仓库中的提交记录保存的是你的目录下所有文件的快照,就像是把整个目录复制,然后再粘贴一样,但比复制粘贴优雅许多!
    发表于 02-22 10:41 229次阅读

    git rebase与相关git merge命令比较

      #前言     git rebase命令经常被认为是Git的巫术,初学者应该远离它,但它实际上可以让开发团队在使用时更加轻松。今天,我们将git rebase与相关git merg
    的头像 发表于 05-26 16:22 424次阅读
    <b class='flag-5'>git</b> rebase与相关<b class='flag-5'>git</b> merge命令比较

    git rebase和git merge的区别

      解决冲突 git rebase和git merge的区别 分支合并 git merge是用来合并两个分支的。 比如:将 b 分支合并到当前分支。 同样git rebase b,也是
    的头像 发表于 07-05 09:54 402次阅读
    <b class='flag-5'>git</b> rebase和<b class='flag-5'>git</b> merge的区别

    Git是什么 Git介绍

    git 是什么? Git 诞生于 2005 年,是一款免费、开源、分布式版本控制系统。 直接记录快照,而非差异比较 Git 和其它版本控制系统的主要差别在于 Git 对待数据的方式。
    的头像 发表于 07-22 10:50 1230次阅读
    <b class='flag-5'>Git</b>是什么 <b class='flag-5'>Git</b>介绍

    Git命令的综合手册怎么找

    若你使用 Git 时需要获取帮助,有三种等价的方法可以找到 Git 命令的综合手册(manpage): $ git help $ git -- help $ man
    的头像 发表于 07-22 11:02 432次阅读

    git基本操作命令用法

    基本用法 上面的四条命令在工作目录、暂存目录(也叫做索引)和仓库之间复制文件。 git add files把当前文件放入暂存区域。 git commit给暂存区域生成快照并提交。 git reset
    的头像 发表于 09-13 16:29 574次阅读
    <b class='flag-5'>git</b>基本操作命令用法