Linux相关概念和重要知识点(7)(git、冯诺依曼体系结构)

1.git

(1)版本控制和版本控制器

当我们修改一个项目的时候,一般都会先留下一个备份再修改 ,并将修改的文件命名为第一次修改、第二次修改......当需要途中的任何版本,或是需要回退到之前的版本时,都能够找到备份的项目。因为所有的修改都被记录了下来了,所有版本都能找到,这就叫做版本控制。

如此一来,软件的每次修改都会被保存,v1、v2、v3...版本。如果某个版本出现了严重的问题,且短时间不能解决,开发人员可以快速回滚到上一个版本,将出现问题的新版本改好后再上线。 回退是软件层面一个很严重的事故,但至少有退步的空间,能在出现问题时快速作出回应,而不会造成长时间软件不可用的状态

上述说到的先备份、再修改的版本控制在项目小、人员少时能手动控制,但人数一多就必须借助版本控制器(git、svn)。

(2)理解git是一个分布式的、去中心化的版本控制的版本控制器

git是一个版本控制器。我们需要建立一个仓库,git可以帮我们把数据提交到仓库里,也可以帮我们拉取。 我们可以简单理解为,git是一个帮我们在仓库管理数据的软件。

借助git来进行版本管理有一个特点,就是每个人的电脑上都可以本地管理,在本地就有着完整的修改记录。 我们可以只建立一个本地的仓库,然后用git管理,这样也省去我们自己手动管理的时间。但实际上,除了本地的仓库,远端仓库可以更好帮助我们保存数据,也有助于多人协同远端仓库和本地仓库本质上没有区别,在git看来都是仓库,以同样的方式提交或拉取数据。但远端仓库是保存在提供仓库的大型服务器上,本地仓库是在我们电脑上的。

Gitee和Gitub就有提供远端仓库的大型服务器(一般叫做代码托管平台) ,我们提交代码后可以到对应的网站去管理或查看它们,很方便,别人也可以直接从远端仓库将我们的代码pull下来,多人协同很方便。 因为代码托管又是明显,很多大型企业也在用,也存在合作和资助的关系,这也体现出和开源一样的商业模式(其实git软件本身也是开源的)。

何为中心化?中心化是指所有数据的处理集中在大型服务器上,本地的数据强烈依赖大型服务器 。在git这一套体系中,远端仓库确实聚集了很多数据,但本质上源数据都是在本地管理,本地包含所有版本信息,修改历史(本地才是数据的中心),只是最后上传保管,有的时候对协同工作有帮助而已(在服务器上新建一个目录)。换句话说,就算哪一天Gitee和Gitub突然出问题,远端仓库全部销毁了,git管理的本地仓库依然有全套数据和修改,我们换一个能提供远端仓库的服务器就好了。而如果是中心化、集中式管理,那么服务器一崩,所有数据都会丢失。

综上所述,git保证远端仓库和本地仓库同步,实现分布式、去中心化管理。

(3)git常用操作

①获取远端仓库:git clone (远端仓库路径) ,获取同时还会自动在本地新建一个仓库.git,用于本地和远端同步管理。

②提交流程:git add (文件路径) 先将待提交文件添加到git暂存区index中 。隐藏的目录.git中,可以找到这个index暂存区,index是一个特殊编码的文件,使用git自己的编码格式。add之后我们只能算是将文件临时添加到了git仓库中,但是可以选择放弃提交而不留痕迹。

git commit -m "(描述信息)"将暂存区数据提交到本地仓库,每次提交都有一个id值(版本链), 这个时候仓库中修改数据、版本信息都会被保存。在.git的objects目录中我们可以看到版本管理,根据id可在里面找到信息,这个时候我们依然可以选择回退某些信息。

git push 之后,本地仓库的数据就和远端仓库数据同步 ,此后想要回退就很复杂了。如果同步之前远端仓库的数据和本地相比有修改的话,那就先要先git pull先将云端数据同步下来才行。如果出现了冲突,即远端修改的那部分代码和本地编辑的代码在同一文件,则会都保存在一起,让我们自行处理(不会乱)。

③其余操作和文件

git status 查看git仓库状态,也可以查看暂存区的文件信息

git log查看提交记录的日志

.gitignore 里面存的是忽略上传的文件后缀,本地托管和远端仓库都不会被提交,可以节省一定资源

(4)git开源的意义

**git整个软件开源(没有分客户端和服务器端),人们可以研究git源代码来实现一个能使用git来提交的服务器。这也是git通用于Gitee和Gitub的原因,它们是在git开源下做出的二次开发。**并且git并没有分客户端和服务器端(server 和 client),维护起来也比较容易

2.冯诺依曼体系结构

冯诺依曼体系结构中计算机的基本原理是存储程序和程序控制。计算机为了完成指定数据处理,要按照指定流程完成指定功能,指令的合计就是一段程序。

SRAM、DRAM、Cache:SRAM是静态随机存取存储器,它不需要刷新就可以维持数据 ,并且和DRAM一样都凸显"随机"二字,和随机迭代器一样可以直接访问对应地址,存储位置几乎不影响存取时间。其中DRAM用于内存,SRAM用于Cache(高速缓存)。Cache集成在CPU中,不属于存储器。

**CPU在数据层面上都是和DRAM打交道,而不会和硬盘打交道。**因为硬盘和CPU比起来太慢了,会受到木桶效应限制,而内存是读取速度稍快,价格稍低的硬件,可以说DRAM极大降低了计算机的价格,是冯诺依曼体系结构中很重要的一环。任何程序运行的时候都必须从硬盘加载到内存,CPU不会直接访问外设,冯诺依曼体系结构决定程序必须先加载到内存中

数据在计算机内部流转时,本质是在不同设备间进行拷贝。如IO流(Inuput输入设备 -> 存储器,Output存储器 -> 输出设备)

相关推荐
YRr YRr15 分钟前
CMake 中 add_definitions() 使用的注意事项及替代方案
linux·c++·windows·cmake
江上清风山间明月1 小时前
repo 查看指定日期内,哪些仓库有修改,具体的修改详情
git·repo·记录·日期·修改·作者·详情
遥逖1 小时前
Linux上的C/C++编程
linux·c语言·c++
鼠鼠龙年发大财1 小时前
【tbNick专享】虚拟机域控、成员服务器、降级等管理
运维·服务器
夏微凉.2 小时前
【RabbitMQ】RabbitMQ 的概念以及使用RabbitMQ编写生产者消费者代码
linux·学习·rabbitmq
Lilixxs2 小时前
MobaXterm基本使用 -- 服务器状态、批量操作、显示/切换中文字体、修复zsh按键失灵
运维·服务器·前端
Java入门学习2 小时前
IDEA更改远程git仓库地址
git·idea
醉颜凉2 小时前
银河麒麟桌面操作系统如何添加WPS字体
运维·服务器·kylin·wps·麒麟·wps添加字体
小牛同学_2 小时前
Git 详细安装教程(详解 Git 安装过程的每一个步骤)
git