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/

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深入理解Docker自定义网络:构建高效的容器网络环境

目录 博客前言: 一.docker自定义网络介绍 1.docker自定义网络介绍 2.使用技术的优势 3.基本使用流程 二.实战操作 1.模式理论介绍 bridge模式(默认模式) host模式 2.模式特点 查看桥接模式的特点 查看仅主机模式的特点 3.实战操作 bridge模式 host模式 自定义网络…

Android Compose - PlainTooltipBox(已废弃)的替代方案

Android Compose - PlainTooltipBox 的替代方案 TooltipBox(positionProvider TooltipDefaults.rememberPlainTooltipPositionProvider(),tooltip {PlainTooltip {Text(/* tooltip content */)}},state rememberTooltipState(), ) {// tooltip anchorIconButton(onClick {…

EdgeX Foundry - MQTT 设备服务

文章目录 一、MQTT 设备服务1.概述2.服务配置3.协议属性4.多级 Topics4.1.异步数据4.2.命令 二、连接 MQTT 设备1.docker-comepse2.设备配置文件3.安装自定义配置4.启动 EdgeX Foundry5.创建 MQTT 设备模拟器6.访问 UI6.1. consul6.2. EdgeX Console 7.测试7.1.命令7.2.事件7.3…

【踏雪无痕的痕五】——一年级数学题映射动态规划

目录 一、背景介绍三、过程1.那是什么样的一个数学题?2.动态规划是个啥?3.为啥联系到动态规划了?4.拿01背包算法做个小例子练练手吧5.感受 四、总结 一、背景介绍 小编发烧并发症一周了,这一周从最开始的轻飘飘找不到灵魂在哪里—…

【心理】程序人生之情绪与压力篇,附心理学相关证书备考指南(心理学312统考,心理治疗师,中科院心理咨询师,家庭教育指导师,企业培训证书)

程序员生活指南(情绪与压力篇)之 【心理】程序人生之情绪与压力专项,附心理学相关证书备考指南(心理学312统考,心理治疗师,中科院心理咨询师,家庭教育指导师,企业培训证书&#xff0…

Linux之进程信号

目录 一、概念引入 1、生活中的信号 2、Linux中的信号 二、信号处理常见方式 三、信号的产生 1、键盘产生信号 2、系统调用接口产生信号 3、软件条件产生信号 4、硬件异常产生信号 四、信号的保存 相关概念 信号保存——三个数据结构 信号集——sigset_t 信号集操…

程序员如何选择职业赛道?

程序员选择职业赛道就像是在一个充满挑战和机遇的迷宫中探索。不同的职业赛道代表着不同的路径,每条路径都有其独特的风景和挑战。我愿意为大家提供一些关于如何选择职业赛道的建议。本文将分为几个部分,包括了解自己、了解行业、职业规划、技能提升和持…

单片机独立按键控制LED状态

一、前言 这幅图是按键的抖动与时间的联系 按键抖动:对于机械开关,当机械鮑点断开、闭合时,由于机械触点的弹性作用,一个开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开,所以在开关闭合及断开的…

加密与安全_探索数字证书

文章目录 Pre概述使用keytool生成证书使用Openssl生成证书 (推荐)证书的吊销小结 Pre PKI - 借助Nginx 实现Https 服务端单向认证、服务端客户端双向认证 PKI - 04 证书授权颁发机构(CA) & 数字证书 PKI - 数字签名与数字证…

matplotlib散点图

matplotlib散点图 假设通过爬虫你获取到了北京2016年3, 10月份每天白天的最高气温(分别位于列表a, b), 那么此时如何寻找出气温和随时间(天)变化的某种规律? from matplotlib import pyplot as pltx_3 range(1, 32) x_10 range(51, 82)y_3 [11,17,16,11,12,11,12,6,6,7,8…

GEE:使用双曲正切(tanh)激活函数对单波段图像进行变换(以NDVI为例)

作者:CSDN @ _养乐多_ 本文将介绍在 Google Earth Engine (GEE)平台上,对任意单波段影像进行 双曲正切(tanh)激活函数 变换的代码。并以对 NDVI 影像中像素值的变换为例。 文章目录 一、tanh激活函数1.1 tanh激活函数1.2 用到遥感图像上有什么用?二、代码链接三、完整代…

STL——queue

queue 1. 队列是一种容器适配器,专门用于在FIFO上下文(先进先出)中操作,其中从容器一端插入元素,另一端提取元素。 2. 队列作为容器适配器实现,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特…

Linux入门到入土

Linxu Linux 简介 Linux 内核最初只是由芬兰人林纳斯托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。 Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX(可移植操作系统接口&#xff09…

Vscode 使用SSH远程连接树莓派的教程(解决卡在Downloading with wget)

配置Vscode Remote SSH 安装OpenSSH 打开Windows开始页面,直接进行搜索PowerShell,打开第一个Windows PowerShell,点击以管理员身份运行 输入指令 Get-WindowsCapability -Online | ? Name -like OpenSSH* 我是已经安装好了,…

掘根宝典之c语言字符指针,指针数组,数组指针,函数指针

目录 字符指针 字符指针指向字符串 使用字符指针 例子 指针数组 数组指针 数组名和&数组名 数组名 sizeof(数组名),&数组名 &数组名 &数组名错误使用方法 数组名和&数组名用于一维数组 例子1 例子2 数组名和&数组名用于二维数…

龙耀南街 喜闹元宵| 猜灯谜送汤圆蒙面K歌精彩多多!

上元南街,璀璨烟花!正月十五,你来南街闹元宵了吗? 为了更好的让游客体验碳水王国丰富多元的元宵活动,南街特此设定了:送汤圆做龙灯、猜灯谜送财气、大屏互动.好运连连、南街大舞台.有才你就来—蒙面歌王挑战赛、璀璨烟花,现场热闹欢腾~ 送汤圆: 做龙灯: 猜灯谜送财气: 大屏互…

Java内存区域

Java内存区域 Java内存区域就是Java运行时数据区 线程私有的:程序计数器、虚拟机栈、本地方法栈线程共享的:堆、方法区 1.程序计数器 程序计数器是什么:可以看作是当前线程所执行的字节码的行号指示器 程序计数器的作用: 实…

Open3D 进阶(21)无序点云平面检测的鲁棒统计方法

目录 一、算法原理1、算法过程2、参考文献二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理 1、算法过程 除了寻找具有最大支持的单个平面外,Open3D还包含一个算法,该算法使…

于月仙主动与赵本山握手表示欢迎,赵:怎么着要跟我第二次牵手啊?

于月仙主动与赵本山握手表示欢迎,赵:怎么着要跟我第二次牵手啊? --小品《乡村爱情》(中1)的台词 表演者:赵本山 于月仙 王小利 唐鉴军等 (接上) 咱们呢就给新人揭盖头 好 好长贵…

STM32 (4) GPIO(1)

1.芯片的引脚分布 2.普通IO引脚的命名规则 3.IO复用 IO引脚身兼数职的现象叫做IO复用,可以使芯片拥有更多的功能,例如: PA9和PA10既可以用于GPIO的引脚,也可以用于串口或定时器的引脚 通用:CPU直接控制IO引脚的输入输…