首页 > 其他分享 >Git到底是什么?它有哪些功能?

Git到底是什么?它有哪些功能?

时间:2022-11-29 19:31:11浏览次数:55  
标签:文件 HEAD git 到底 哪些 暂存区 Git 版本

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

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


1、常见的版本控制系统

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

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

Git到底是什么?它有哪些功能?_git

特点:

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

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

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


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

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

Git到底是什么?它有哪些功能?_git_02

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

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


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

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

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

(1)工作区:

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

(2)暂存区(stage 或 index):

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

(3)版本库:

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

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

Git到底是什么?它有哪些功能?_git_03

上图中左侧为工作区,右侧为版本库。在版本库中标记为 "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到底是什么?它有哪些功能?_git_04

总的来说:Git是一个很方便的代码托管平台,使用者可以在远程服务器上建立属于自己的项目资源管理库,实现远程和本地的资源同步,本地添加、修改的文件可以及时更新到远程服务器上保存管理。

同时也可以便利于多人协作开发,及时更新最新的资源库文件当本地的工作区,及时知晓最新的更新进度,加快开发的进度。




Git到底是什么?它有哪些功能?_git_05

标签:文件,HEAD,git,到底,哪些,暂存区,Git,版本
From: https://blog.51cto.com/wangjunlv/5896621

相关文章

  • git difftool配置
    gitconfig--globaldiff.toolvimdiffgitconfig--globaldifftool.promptfalsegitconfig--globalalias.ddifftoolgitconfig--globaldifftool.trustExitCode......
  • 移动端企业IM(即时通讯工具)需要具备哪些功能
    望一望如今的软件市场,企业IM市场犹如过江之鲫,显然企业IM,即企业即时通讯工具,已经成为许多企业提升工作效率的标配软件。智能手机的出现拓展了企业办公的场景,“移动办公”也是......
  • 推荐大家在GitHub 上值得关注学习的 iOS 开源项目
    GitHub上有很多不错的iOS开源项目,和大家特别推荐以下几个项目:1.ReactiveCocoaGitHub链接:​​ReactiveCocoa/ReactiveCocoa​​GitHub自家的函数式响应式编程范式的Objecti......
  • GIT
    GeorgiaInstituteofTechnology,比较正式的简称是GeorgiaTech,往往也因此更进一步缩写为GT。另一个缩写方式“GIT”则一般是外人在用,GT本校的人通常是不用的。由于Intern......
  • Git --- 傻瓜内容跟踪器
    介绍Git---Thestupidcontenttracker,傻瓜内容跟踪器。Linux是这样给我们介绍Git的。Git是用于Linux内核开发的版本控制工具。与常用的版本控制工具CV......
  • window下版本控制工具Git 客户端安装
    软件开发好久,突然才发现还有git,没有用过。安装使用1.下载msysgit​​http://code.google.com/p/msysgit/​​2.下载tortoisegit客户端安装​​http://code.goog......
  • 如何将gitee码云上的项目拉取到本地
    如何将gitee码云上的项目拉取到本地借鉴这位博主的,这微位博主中关于这部分内容写的很详细,可以去看看最基本的就是要安装git点击跳转到git官网,根据自己的需要自行选......
  • gitee推送更新失败问题记录:remote: error: hook declined to update refs/heads/maste
    问题描述:gitee推送更新时,提示:remote:PoweredbyGITEE.COM[GNK-6.4]remote:error:GE007:Yourpushwouldpublishaprivateemailaddress.    remote:......
  • visual studio 2017 使用码云gitee进行源代码管理
    在码云新建项目  复制项目地址  visualstudio 操作  新建项目 提交到码云 https://blog.csdn.net/sekone/article/details/82619934?ops_req......
  • git 版本打tag
    gitadd.gitcommit-m'refreshv2.0.0'gittag-a2.0.0-m''gitpushoriginmastergitpushorigin--tag给指定的某个commit号加tag打tag不必要在head......