Git的四个工作区域和主工作流程(workspace index repository remote)理解

一.GIT是分布式版本控制系统

  Git是一种分布式版本控制系统,理论上是没有中心的,每一个设备都有本地仓库,任何一个设备的本地仓库出问题对其他设备都没有影响。而且,每一个设备都可以创建分支,Git 强大的分支管理也是它的价值所在。
  由此可以高效地处理项目的版本管理,包括跨区域的多人协同开发,追踪和记录文件的历史记录,组织和保护源代码和文档,统计工作量,跟踪记录整个软件的开发过程。
  Git 在你的电脑上为每个项目建了个本地仓库(项目就是一个文件目录,里面的文件都可以交给 Git 管理),每当你的项目完成一小段任务当后就可以提交给本地仓库。然后你在服务器上建一个远程仓库(这里的服务器只是为了多台设备交流方便而设立的,本质上 Git 系统不依赖它,与中心式系统不是一回事),你将本地仓库的文件推送给远程仓库,其他人(设备)从这个远程仓库获取文件到他们的本地仓库,这样就实现了多个设备的文件同步。

二.GIT的工区域组织架构

  GIT有四个工作区域,每个工作区域实现不同的功能,帮助我们完成不同的工作,如下表所示:

1Workspace工作区
2Index暂存区
3Repository本地仓库
4Remote远程仓库

1.Workspace:工作区

  工作区即进行开发改动的地方,是当前看到的,内容也是最新的,平常开发就是拷贝远程仓库中的分支,基于该分支进行开发,在开发的过程就是在工作区的操作

2.Index:暂存区

(一定程度上相当于是一个指针,但又有一些区别)
  暂存区位于.git目录下的index文件,暂存区会记录 git add 添加文件的相关信息(文件名、大小),不保存文件实体,通过 id 指向每个文件的实体。使用 git status 可以查看暂存区的状态,暂存区标记了当前工作区中那些内容是被 git 管理的,当完成某个需求或者功能后需要提交代码,第一步就是通过 git add 先提交到暂存区。

3.Repository:本地仓库

  位于自己的本地计算机,本地仓库保存了被提交过的各个版本,比起工作区和暂存区的内容,它更旧一些。首先是 git commit(提交) 同步 index 的目录树到本地仓库,然后通过 git push(推送) 同步本地仓库到远程仓库。

4.Remote:远程仓库

  位于托管代码的服务器,远程仓库的内容能够被分布在多个地点的处于协作关系的本地仓库修改(能被本地修改)。比起本地仓库,远程仓库通常旧一些,因此本地仓库修改完之后需要同步到远程仓库。

三.Git 的工作流程

  • 在工作区(Workspace)添加、修改文件;
  • 将修改后的文件放入(add)暂存区域 index;
  • 将暂存区域的文件提交(commit)到本地仓Repository;
  • 将本地仓库的修改推送(push)到远程仓库Remote。

四.我的理解

1. 远程仓库 是一个虚拟的但又真实存在的地方(类似,不恰当地说的说是GIT网页);


我们从远程仓库克隆到桌面上的某个文件夹下,该文件夹下就有了,如图



在这里有一个隐含文件,点击查看-隐含项目,发现多了一个.git文件,如下图所示;


在隐藏文件.git文件下有index文件,这个文件就是某种程度上所说的 暂存区 了;而整个.git文件就是一定程度上的 本地仓库 ;而 工作区 如下图所示:

2.当我们更改工作区上的某个文档,或添加了一个新文档时,把这些更改同步下来的过程所执行的流程其实是有差别的:

  (1)对于在工作区添加一个新文档或者在工作区中改动某个原有文档的内容(添加/删除一句新代码),把这个改动同步到远程仓库(执行提交,推送命令)
  ①提交的结果是把工作区的内容弄到本地仓库,是本地仓库与工作区保持一致,这其中又包括两部分(内容由工作区放到到暂存区index的过程;以及由 暂存区index到本地仓库 的过程)------(这样本地仓库就与工作区中所做的最新更改一致了);
  虽然好像在电脑上用小乌龟提交好像一部到位了,但是实际也是执行了两步,只不过程序把这两步整合到了一起来执行了;
  如果是在命令行终端进行操作若选择在终端操作如果新增了一个文件,那么必须要用 git add 命令跟踪新文件,再用 git commit -m 命令提交暂存区的文件; 如果只是修改了已跟踪的文件,那么可以用 git commit --am 命令一起完成“提交文件到暂存区、提交暂存区的文件”(省略了 git add 命令)

  ②推送 命令的执行过程,执行结果是更改远程仓库的就内容,使其与本地仓库的新内容保持一致;

3.还原文件的操作“TortoiseGit ->还原(revert)”或者“TortoiseGit->获取(fetch)”、“TortoiseGit->合并(merge)”操作

  如果工作区中的重要文档由于手欠删除了,该怎么办;别急我们可以通过操作还原,虽然我们工作区中的内容删除了(之后没有提交),但是由于我们曾经将内容提交到了本地仓库(也曾经推送到了远程仓库),我们可以使用“TortoiseGit ->还原(revert)”功能,使本地仓库的内容重新回到工作区;

  如果工作区中的重要文档由于手欠删除了,删除之后执行了提交操作此时本地仓库的内容也被修改成了最新的样子;想要恢复只能通过远程仓库来恢复如初;①执行获取;②在执行合并,合并时会出现冲突(因为此时如果打开版本分支图的话发现远程落后于本地,只有本地落后于远程才可以执行合并操作),解决冲突后,执行合并,此时本地设备的工作区又恢复了;
注: 获取操作:使本地仓库与远程仓库做一个对比(因为有所修改);合并操作:使本地仓库同步到远程仓库,如果使用乌龟来执行合并的话,还会默认悄悄执行了checkout操作;

4.在远程仓库直接修改,本地的设备想要实现同步可以执行获取与合并操作(“TortoiseGit->获取(fetch)”、“TortoiseGit->合并(merge)”)

  通过获取操作,发现设备上的工作区的内容并没有改变什么,再次执行合并操作,发现设备工作区的内容改变了。(获取操作:使本地仓库与远程仓库做一个对比(因为有所修改);合并操作:使本地仓库同步到远程仓库,如果使用乌龟来执行合并的话,还会默认悄悄执行了checkout操作,使设备的工作区也得到了更新;如果在命令行终端操作,还是要认真执行每一步,每个操作)

五.如何将公共仓库中自己的分支克隆到本地,并往自己的分支上提交推送信息;(两种方式)

先新建自己的分支




点击克隆/下载按钮,复制;之后可以采用两种方式

(一)方式一

在桌面的一个指定文件夹下,右键->Git克隆,选中“分支”,在后面输入自己新建的的分支名称,最后点击“确定”即可;

方式二

1.在桌面的一个指定文件夹下,右键->Git克隆,点击“确定”
2.打开设备指定文件夹下的工作区;右键->TortouseGit(T)->创建分支(B)
如下图,选择已创建的自己的工作区即可;

 愿意同Joker一起探索测试之路,可以关注公众号交流。

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Anthony_路人甲

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

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

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

打赏作者

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

抵扣说明:

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

余额充值