Git 版本控制

Git 版本控制

  • 1. About Version Control (关于版本控制)
    • 1.1. Local Version Control Systems (本地版本控制系统)
    • 1.2. Centralized Version Control Systems (集中化的版本控制系统)
    • 1.3. Distributed Version Control Systems (分布式版本控制系统)
  • 2. 换行符的处理
  • 3. keyboard shortcuts
  • References

Pro Git (SECOND EDITION)
https://git-scm.com/book/en/v2

Pro Git (SECOND EDITION)
https://git-scm.com/book/zh/v2

1. About Version Control (关于版本控制)

Version control is a system that records changes to a file or set of files over time so that you can recall specific versions later. For the examples in this book, you will use software source code as the files being version controlled, though in reality you can do this with nearly any type of file on a computer.
版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。在本书所展示的例子中,我们对保存着软件源代码的文件作版本控制,实际上可以对任何类型的文件进行版本控制。

Git 仓库管理功能是 GitHub 的核心。Git 是一个分布式版本管理系统,是为版本管理而设计的软件。Linux 的创始人 Linus Torvalds 在 2005 年开发了 Git 的原型程序。

集中型与分布式都各有优缺点,需要看具体情况而定。

1.1. Local Version Control Systems (本地版本控制系统)

Many people’s version-control method of choice is to copy files into another directory (perhaps a time-stamped directory, if they’re clever). This approach is very common because it is so simple, but it is also incredibly error prone. It is easy to forget which directory you’re in and accidentally write to the wrong file or copy over files you don’t mean to.
许多人习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上备份时间以示区别。这么做唯一的好处就是简单,但是特别容易犯错。有时候会混淆所在的工作目录,一不小心会写错文件或者覆盖意想外的文件。

prone [prəʊn]:adj. 易于遭受,有做 (坏事) 的倾向,有做 ... 倾向的,易于遭受 ... 的

在这里插入图片描述

Figure 1. Local version control diagram

One of the most popular VCS tools was a system called RCS, which is still distributed with many computers today. RCS works by keeping patch sets (that is, the differences between files) in a special format on disk; it can then re-create what any file looked like at any point in time by adding up all the patches.
其中最流行的一种叫做 RCS,现今许多计算机系统上都还看得到它的踪影。RCS 的工作原理是在硬盘上保存补丁集 (补丁是指文件修订前后的变化);通过应用所有的补丁,可以重新计算出各个版本的文件内容。

1.2. Centralized Version Control Systems (集中化的版本控制系统)

集中化的版本控制系统 (Centralized Version Control Systems,CVCS) 使得在不同系统上的开发者协同工作。

These systems (such as CVS, Subversion, and Perforce) have a single server that contains all the versioned files, and a number of clients that check out files from that central place.
有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。

在这里插入图片描述

Figure 2. Centralized version control diagram

Administrators have fine-grained control over who can do what, and it’s far easier to administer a CVCS than it is to deal with local databases on every client.
每个人都可以在一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松掌控每个开发者的权限,并且管理一个 CVCS 要远比在各个客户端上维护本地数据库来得轻松容易。

最显而易见的缺点是中央服务器的单点故障。如果中心数据库所在的磁盘发生损坏,又没有做恰当备份,毫无疑问你将丢失所有数据 (包括项目的整个变更历史),只剩下人们在各自机器上保留的单独快照。本地版本控制系统也存在类似问题,只要整个项目的历史记录被保存在单一位置,就有丢失所有历史更新记录的风险。

集中型将所有数据集存放在服务器当中,有便于管理的优点。但是一旦开发者所处的环境不能连接服务器,就无法获取最新的源代码。

在这里插入图片描述

1.3. Distributed Version Control Systems (分布式版本控制系统)

分布式版本控制系统 (Distributed Version Control System,DVCS),such as Git, Mercurial or Darcs,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来,包括完整的历史记录。任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。

在这里插入图片描述

Figure 3. Distributed version control diagram

GitHub 将仓库 Fork 给了每一个用户,Fork 是将 GitHub 的某个特定仓库复制到自己的账户下。Fork 出的仓库与原仓库是两个不同的仓库,开发者可以随意编辑。

在这里插入图片描述

所有仓库之间都可以进行 push 和 pull。即便不通过 GitHub,开发者 A 也可以直接向开发者 B 的仓库进行 push 或 pull。

数据库 (Repository) 是记录文件或目录状态的地方,存储着内容修改的历史记录。在数据库的管理下,把文件和目录修改的历史记录放在对应的目录下。数据库分为远程和本地两种。如果想要公开在本地数据库中修改的内容,把内容上传到远程数据库就可以了。通过远程数据库还可以取得其他人修改的内容。

Git 可以在任何时间点,把文档的状态作为更新记录保存起来。Git 管理文件,将更新的历史保存在 Git,所以不需要备份文件。

2. 换行符的处理

GitHub 中公开的代码大部分都是以 Mac 或 Linux 中的 LF (Line Feed) 换行。由于 Windows 中是以 CRLF (Carriage Return + Line Feed) 换行的,所以在非对应的编辑器中将不能正常显示。Git 可以通过设置自动转换这些换行符。

3. keyboard shortcuts

shift + / 打开键盘快捷键一览表

在这里插入图片描述

References

[1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/
[2] 配置 Git 默认编辑器为 Vim, https://yongqiang.blog.csdn.net/article/details/130233565
[3] (日) 大塚弘记 著, 支鹏浩, 刘斌 译. GitHub 入门与实践[M]. 北京:人民邮电出版社, 2015. 1-255
[4] 为你自己学 Git, https://gitbook.tw/
[5] Git, https://git-scm.com/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/270866.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# 由左上、右下两个坐标点计算矩形的长、宽以及两点的距离

一、计算长、宽 直接使用坐标点计算 // 定义矩形左上角和右下角的坐标 Point topLeft new Point(0, 0); Point bottomRight new Point(5, 10); // 计算矩形的长和宽 int width bottomRight.X - topLeft.X;//矩形宽度 int height bottomRight.Y - topLeft.Y;//矩形高度或是…

Vue中有哪些优化性能的方法?

Vue是一款流行的JavaScript框架,用于构建交互性强的Web应用程序。在前端开发中,性能优化是一个至关重要的方面,尤其是当应用程序规模变大时。Vue提供了许多优化性能的方法,可以帮助开发人员提升应用程序的性能,从而提升…

初学者如何使用QT新建一个包含UI界面的C++项目

文章目录 一、下载并安装QT51、下载安装包2、注册/登录账号3、安装qt6 二、新建QT Widget项目1、新建项目并且运行2、易错点:可能运行成功得到UI界面但是会报错(原因是使用了中文路径) 一、下载并安装QT5 1、下载安装包 进入下载网址 Windo…

链表习题-力扣oj (附加思路版)

LCR 140. 训练计划 IIhttps://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/ 给定一个头节点为 head 的链表用于记录一系列核心肌群训练项目编号,请查找并返回倒数第 cnt 个训练项目编号。 思路:双指针,快指针先走cnt…

RabbitMQ队列

RabbitMQ队列 1、死信的概念 ​ 先从概念解释上搞清楚这个定义,死信,顾名思义就是无法被消费的消息,字面意思可以这样理解,一般来说,producer将消息投递到broker或者直接到queue里了,consumer 从 queue取出消息进行消…

基于redis实现用户登陆

因为session有数据共享问题,不同tomcat服务器中的session不能共享,之后负载均衡就无法实现。所以我们用redis代替session。redis可以被多个tomcat服务器共享,redis基于内存。 之前的session可以看做登陆凭证,本次登陆凭证由sessi…

C语言指针总结(完结篇)

前言 这篇博客终于迎来了指针博客的大结局,本篇主要分析习题来回顾之前的指针总结的知识点,这篇博客的题有点绕,哈哈算是经典了 个人主页:小张同学zkf 若有问题 评论区见 感兴趣就关注一下吧 目录 1. sizeof和strlen的对比 1.1 …

TikTok矩阵获客软件的核心源代码是什么?

随着互联网的不断发展,社交媒体已成为企业获客的重要渠道之一,在众多的社交媒体平台中,TikTok凭借其庞大的用户群体和活跃的社交氛围,成为了众多企业竞相争夺的营销高地。 在这样的背景下,TikTok矩阵获客软件应运而生…

Linux Ubuntu部署SVN服务端结合内网穿透实现客户端公网访问

文章目录 前言1. Ubuntu安装SVN服务2. 修改配置文件2.1 修改svnserve.conf文件2.2 修改passwd文件2.3 修改authz文件 3. 启动svn服务4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射本地端口 5. 测试公网访问6. 配置固定公网TCP端口地址6.1 保留一个固定的公网TCP端口地址6…

RISC-V架构学习资料整理

1、韦东山——D1S哪吒开发板的裸机代码仓库 https://github.com/bigmagic123/d1-nezha-baremeta 2、melis系统移植到D1S https://blog.51cto.com/u_13800193/6268813 3、韦东山的gitee仓库 https://gitee.com/weidongshan 4、D1S编译工具链下载 https://github.com/Tina-Linux/…

Tomcat安装步骤及详细配置教程(2022最新版)

网上的tomcat安装及配置教程一大堆,但是好多都过时了,根本不适用现在的版本,今天凯歌整理一篇Tomcat安装步骤及详细配置教程,2022年最新版~ Tomcat安装及配置教程主要分为四步: 步骤一:首先确认自己是否已…

学习Java的第一天

一、Java简介 Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 面向对象程序设计语言和 Java 平台的总称。由 James Gosling和同事们共同研发,并在 1995 年正式推出。 后来 Sun 公司被 Oracle (甲骨文)公司收购,Jav…

nvm安装和使用保姆级教程(详细)

一、 nvm是什么 : nvm全英文也叫node.js version management,是一个nodejs的版本管理工具。nvm和npm都是node.js版本管理工具,为了解决node.js各种版本存在不兼容现象可以通过它可以安装和切换不同版本的node.js。 二、卸载之前安装的node: …

java核心面试题汇总

文章目录 1. Java1.1. TCP三次握手/四次挥手1.2 HashMap底层原理1.3 Java常见IO模型1.4 线程与线程池工作原理1.5 讲一讲ThreadLocal、Synchronized、volatile底层原理1.6 了解AQS底层原理吗 2. MySQL2.1 MySQL索引为何不采用红黑树,而选择B树2.2 MySQL索引为何不采…

python基础第二天

世界杯小组赛成绩 注意: 1.循环 1.1while 1.2for 1.3 range 1.4 while else while 循环正常执行完才能执行else语句

【学习】torch.nn.CrossEntropyLoss交叉熵损失函数

交叉熵损失函数torch.nn.CrossEntropyLoss 交叉熵主要是用来判定实际的输出与期望的输出的接近程度,为什么这么说呢,举个例子: 在做分类的训练的时候,如果一个样本属于第K类,那么这个类别所对应的输出节点的输出值应…

计讯物联环保数采仪TS910全力打造绿色宜居生态环境

植树造林自古以来就有调节气候、涵养水源、减轻大气污染的益处。如今,随着科技的迅速发展,我们除了能够以植树造林来改善生活环境,保持生态系统,还能通过物联网、大数据、云计算、边缘计算、人工智能等新一代信息技术集成应用于监…

使用 Docker 部署 Fiora 在线聊天室平台

一、Fiora 介绍 Fiora 简介 Fiora 是一款开源免费的在线聊天系统。 GitHub:https://github.com/yinxin630/fiora Fiora 功能 注册账号并登录,可以长久保存你的数据加入现有群组或者创建自己的群组,来和大家交流和任意人私聊,并添…

探索SRM软件:了解SRM在企业中的作用

作为供应商,对于SRM软件并不陌生,但对于刚刚进入采购行业的新手来说,就可能不太了解这个软件的作用了。现在让我们来科普一下:通常,我们将SRM称为供应商关系管理,其全称为Supplier Relationship Management…

让照片说话唱歌的软件,盘点这3款!

在数字时代,我们总是渴望找到新的方式来表达自我、分享生活。近年来,随着人工智能和图像处理技术的飞速发展,一种新型的软件应运而生,它们能够让照片“说话”甚至“唱歌”,给我们的生活带来了无限乐趣和创意空间。那么…