Git 使用 — 一文建讲明白 Git 是什么?

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

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

1、常见的版本控制系统

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

集中式版本控制系统的示意图如下:
在这里插入图片描述

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

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

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

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

分布式版本控制系统的示意图如下:
在这里插入图片描述

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

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

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

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

那这三个概念都是些什么意思呢?

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

2)暂存区(stage 或 index):
一般存放在 .git 目录下的 index 文件(.git/index)中,所以也可以把暂存区叫作索引(index)。

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

工作区、版本库中的暂存区和版本库之间的关系如下图所示:
在这里插入图片描述

上图中左侧为工作区,右侧为版本库。在版本库中标记为 “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 <file>

1)当执行 git rm --cached 命令时,会直接从暂存区删除文件,工作区则不做出改变。

2.1.5、检出文件

git checkout .	或  git checkout -- <file>

1)当执行 git checkout . 会用暂存区全部的文件替换工作区的文件。或者 git checkout – 命令时,会用暂存区指定的文件替换工作区的文件。这个操作是很危险,会清除工作区中未添加到暂存区的改动。

git checkout HEAD .	或者	git checkout HEAD <file> 

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

3、代码托管中心

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

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

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

4、Git的工作流程

Git的工作流程可以归纳如下图所示:
在这里插入图片描述

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

对嵌入式技术感兴趣的,欢迎关注微信公众号“嵌入式之入坑笔记”,一起学习交流啊!
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式之入坑笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值