git提取和拉取区别_每天一Git之起步 - 关于版本控制
每天一Git之起步 - 关于版本控制
本文章为git官方文档摘抄,请访问https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%85%B3%E4%BA%8E%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6官网Docs进行学习和理解!
本章为 Git 入门。 我们从介绍版本控制工具的背景知识开始,然后讲解如何在你的系统上运行 Git,最后是关于如何设置 Git 以便开始工作。 通过本章的学习,你应该能了解为什么 Git 这么流行,为什么你应该使用 Git 以及你应该如何设置以便使用 Git。
关于版本控制
什么是“版本控制”?我为什么要关心它呢? 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。 在本书所展示的例子中,我们对保存着软件源代码的文件作版本控制,但实际上,你可以对任何类型的文件进行版本控制。
如果你是位图形或网页设计师,可能会需要保存某一幅图片或页面布局文件的所有修订版本(这或许是你非常渴望拥有的功能),采用版本控制系统(VCS)是个明智的选择。 有了它你就可以将选定的文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态,你可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出导致怪异问题出现的原因,又是谁在何时报告了某个功能缺陷等等。 使用版本控制系统通常还意味着,就算你乱来一气把整个项目中的文件改的改删的删,你也照样可以轻松恢复到原先的样子。 但额外增加的工作量却微乎其微。
本地版本控制系统
许多人习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上备份时间以示区别。 这么做唯一的好处就是简单,但是特别容易犯错。 有时候会混淆所在的工作目录,一不小心会写错文件或者覆盖意想外的文件。
为了解决这个问题,人们很久以前就开发了许多种本地版本控制系统,大多都是采用某种简单的数据库来记录文件的历次更新差异。
Figure 1. 本地版本控制.
其中最流行的一种叫做 RCS,现今许多计算机系统上都还看得到它的踪影。 RCS 的工作原理是在硬盘上保存补丁集(补丁是指文件修订前后的变化);通过应用所有的补丁,可以重新计算出各个版本的文件内容。
集中化的版本控制系统
接下来人们又遇到一个问题,如何让在不同系统上的开发者协同工作? 于是,集中化的版本控制系统(Centralized Version Control Systems,简称 CVCS)应运而生。 这类系统,诸如 CVS、Subversion 以及 Perforce 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。 多年以来,这已成为版本控制系统的标准做法。
Figure 2. 集中化的版本控制.
这种做法带来了许多好处,特别是相较于老式的本地 VCS 来说。 现在,每个人都可以在一定程度上看到项目中的其他人正在做些什么。 而管理员也可以轻松掌控每个开发者的权限,并且管理一个 CVCS 要远比在各个客户端上维护本地数据库来得轻松容易。
事分两面,有好有坏。 这么做最显而易见的缺点是中央服务器的单点故障。 如果宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。 如果中心数据库所在的磁盘发生损坏,又没有做恰当备份,毫无疑问你将丢失所有数据——包括项目的整个变更历史,只剩下人们在各自机器上保留的单独快照。 本地版本控制系统也存在类似问题,只要整个项目的历史记录被保存在单一位置,就有丢失所有历史更新记录的风险。
分布式版本控制系统
于是分布式版本控制系统(Distributed Version Control System,简称 DVCS)面世了。 在这类系统中,像 Git、Mercurial、Bazaar 以及 Darcs 等,客户端并不只提取最新版本的文件快照, 而是把代码仓库完整地镜像下来,包括完整的历史记录。 这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。 因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。
Figure 3. 分布式版本控制.
更进一步,许多这类系统都可以指定和若干不同的远端代码仓库进行交互。籍此,你就可以在同一个项目中,分别和不同工作小组的人相互协作。 你可以根据需要设定不同的协作流程,比如层次模型式的工作流,而这在以前的集中式系统中是无法实现的。
git提取和拉取区别_每天一Git之起步 - 关于版本控制相关推荐
- git提取和拉取的区别_git fetch和git pull的区别
[是什么]:平时开发经常遇到不清楚的问题就百度/google,目的是能快速使用并解决问题.这时我们没有花太多时间去深入理解,只求能快速解决手头问题. [为什么]但是如果要深入理解的话,发现有时候百度出 ...
- gitee项目能用SVN拉取吗_用好 Git 和 SVN,轻松驾驭版本管理
来源 | 凌承一链接 | bubuko.com/infodetail-2844306.html 本文从 Git 与 SVN 的对比入手,介绍如何通过 Git-SVN 开始使用 Git,并总结平时工作高 ...
- gitee项目能用SVN拉取吗_使用Git开发维护Github开源项目的一些经验
Github无法访问/访问慢的经验 github经常会因为一些原因抽风,无法访问,这时候,可以使用gitee同步github项目,然后从gitee拉项目.在gitee导入项目以后,项目名称后面有个同步 ...
- Git 提交和拉取服务器最新版本代码方法
博客 学院 下载 图文课 论坛 APP 问答 商城 VIP会员 活动 招聘 ITeye GitChat 写博客 发Chat 传资源 登录注册 个人中心 我的博客 消息(3) 创作中心 帐号设置 我的C ...
- git pull 默认拉取远端其他分支 问题解决
git pull 默认拉取远端其他分支 问题解决 参考文章: (1)git pull 默认拉取远端其他分支 问题解决 (2)https://www.cnblogs.com/starfish29/p/1 ...
- 【OpenGL】六、Visual Studio 2019 配置 GitHub ( 提取和拉取简介 | 拉取远程代码 )
文章目录 一.提取和拉取简介 二.拉取远程代码 一.提取和拉取简介 在 " 团队资源管理器 " 主页中 , 选择 " 同步 " 选项 , 在同步页面中 , 有 ...
- git命令行拉取合并代码流程
自己的分支:eleven 远程分支:dev fetch本地新创建分支: test 工作区:就是你在电脑里能看到的目录. 暂存区:英文叫 stage 或 index.一般存放在 .git 目录下的 in ...
- git拉取请求_创建有效拉取请求的技巧
git拉取请求 Pull Requests (PR) are crucial to almost all software development these days. They have beca ...
- git拉取请求_向需要的开源项目提供拉取请求的礼物
git拉取请求 12月1日, 24个Pull Requests将再次打开其虚拟大门,要求您将Pull Request的礼物赠予需要的开源项目. 六年前,受24 Ways (网络极客的出现日历)的启发, ...
最新文章
- 爬取我主良缘,获取个人图片及其信息
- 百度2016笔试题第一题:页面请求失败值
- 同步数据_体验GoldenGate 18C数据同步到ADW
- 如何查询高考成绩2021年的成绩排位,2020年高考成绩排名怎么查,高考成绩排名是怎么排的...
- 摩拜APP、小程序停服 摩拜单车全面接入美团
- maven 本地仓库添加jar包
- JQuery学习系列(三)语法
- 语音识别代码_Povey正式出任小米语音首席科学家,小米移动端框架MACE全面支持Kaldi...
- 刚开始接触vs有没有什么版本比较好用的?
- 路由器tomato固件上搭建svn
- SQL数据库学习总结
- 软考项目管理十大管理及过程
- 开始时间 结束时间,全程的运行时间的计算
- 数据结构(C语言版)-- 数据结构基础
- 华为云Hadoop与Spark集群环境搭建
- linux 临时文件夹设置,Linux 系统 tmp 目录的安全设置
- win、linux、unix查看系统主机名
- 王者荣耀服务器维护到几点,今晚王者荣耀更新到几点 王者荣耀维护时间王者荣耀公告...
- Python3.6 安装PIL
- CSS3渐变属性:线性渐变和径向渐变用法教程
热门文章
- 计算机检索基础知识,[转载]四 计算机文献检索基础知识(原理、结构和功能)...
- python 获取帮助页_Python-爬取页面内容(涉及urllib、requests、UserAgent、Json等)
- Java中try catch finally语句中含有return语句的执行情况
- 内网外网同时连接方法
- Yii2在部署新机器时需要注意的环境问题
- lightoj1027(期望dp)
- 检查浏览器支持(Checking browser support),这个是很广泛的一个知识!
- 关于android 双击事件
- xcode配置最新版opencv
- 今晚直播丨国产数据库入门:openGauss数据库的基本管理和SQL语句入门