这些技术你可能暂时不会用到,但是一旦软件体量变大,开发人数增加,这就带来质变,需要借助一些工具或者技术才能完成这些复杂的工程。

你可以从最简单的情况思考,你可以对任何类型的文件进行版本控制,比如一个ppt,你修改之后不满意,想回到以前某个时间点的状态。最原始的做法就是本地存储之前未修改的文件。接下来人们又遇到一个问题,如何让在不同系统上的开发者协同工作? 于是,集中化的版本控制系统(Centralized Version Control Systems,简称 CVCS)应运而生

这种做法带来了许多好处,特别是相较于老式的本地 VCS 来说。 现在,每个人都可以在一定程度上看到项目中的其他人正在做些什么。 而管理员也可以轻松掌控每个开发者的权限,各个开发人员也能够各司其职,协同完成软件开发,并且管理一个 CVCS 要远比在各个客户端上维护本地数据库来得轻松容易。事分两面,有好有坏。 这么做最显而易见的缺点是中央服务器的单点故障。

于是分布式版本控制系统(Distributed Version Control System,简称 DVCS)面世了。 在这类系统中,像 Git、Mercurial、Bazaar 以及 Darcs 等,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。 这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。 因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。

Git 有三种状态,你的文件可能处于其中之一:已提交(committed)、已修改(modified)和已暂存(staged)。 已提交表示数据已经安全的保存在本地数据库中。 已修改表示修改了文件,但还没保存到数据库中。 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。

由此引入 Git 项目的三个工作区域的概念:Git 仓库、工作目录以及暂存区域。工作目录、暂存区域以及 Git 仓库如下图所示

感觉又是命令行操作,没有GUI,初期可能不方便,但是到后期会很快的。还可以学习shell语法。

最新文章

  1. MongoDB快速学习笔记
  2. iOS----关于第三方的运用(有待补充)
  3. jquery 上传图片即时预览功能
  4. HDFS的联盟Federation
  5. java作业7
  6. easyui中Tab的tools按钮刷新当前tab
  7. hdu 1546 Idiomatic Phrases Game
  8. 深入了解mysql它BDB系列(1)---BDB基础知识
  9. java 生成证书用于https
  10. Noip2016组合数(数论)
  11. 初步了解关于js跨域问题-jsonp
  12. linux 下 mysql 常用命令
  13. java 开发注意事项
  14. 记录下diagwait的问题
  15. python模块和类的通用转换规则(2),三步转oo
  16. .net core consul grpc--系统服务RPC实现通信(一)
  17. YIT-CTF—密码学
  18. 洛谷 P1342 请柬(SPFA)
  19. 洛谷 P1142 轰炸
  20. [Spring] Java spring quartz 定时任务

热门文章

  1. java 通用取得 系统硬件信息及 jvm 信息的 jar 包 oshi-core
  2. js-变量定义关键字const,var,let
  3. 原创:vsphere概念深入系列三:vSphere命令行管理
  4. 解决Nginx的13: Permission denied) while connecting to upstream
  5. ShardedJedisPool的使用
  6. 在 OC 中调用 Swift 代码
  7. OpenCV 学习笔记 05 人脸检测和识别
  8. Features Download Pricing Mind Maps Blog XMind的快捷键
  9. linux每日命令(37):top命令
  10. Android Launcher分析和修改7——AllApp全部应用列表(AppsCustomizeTabHost)