向西项目管理工具Git一片
前言
一点序
版本号控制
那么。你知道版本号控制系统有几种吗?你考虑过为什么公司里用的是 Git 而不用 SVN 呢?或者用的是 SVN 而不用 Git 呢?先看看他们之间的差别吧。
- 本地版本号控制系统
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFwcHlsZWU2Njg4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" align="middle" alt="" style="background-color:inherit">
- 集中化版本号控制系统
聪明的 Human 找到了解决的办法,就这样。集中式版本号控制系统(Centralized Version Control Systems。简称 CVCS)应运而生。
多年以来,这已成为版本号控制系统的标准做法。并且在企业开发中,集中式的版本号控制系统也是最常见的、最普遍的。
他是说。不论什么事物都有两面性,不存在绝对的好与坏。仅仅只是是一个相对的比較罢了。
我们要追求的就是一种平衡,或者说对我们来说,利大于弊的方面而已。似乎有点跑题啊。。。回到正题。 能够看到,集中式版本号控制系统,最显而易见的缺点就是中央server的单点故障。假设宕机一小时,那么在这一小时内。谁都无法提交更新,也就无法协同工作。
本地版本号控制系统也存在类似问题,仅仅要整个项目的历史记录被保存在单一位置,就有丢失全部历史更新记录的风险。
- 分布式版本号控制系统
基于上述的问题。分布式版本号控制系统(Distributed Version Control System,简称 DVCS )面世了。在这类系统中,像 Git,Mercurial,Bazaar 以及 Darcs 等,client并不仅仅提取最新版本号的文件快照。而是把代码仓库完整地镜像下来。这么一来。不论什么一处协同工作用的server发生问题,事后都能够用不论什么一个镜像出来的本地仓库恢复。由于每一次的提取操作。实际上都是一次对代码仓库的完整备份。
籍此,你就能够在同一个项目中,分别和不同工作小组的人相互协作。你能够依据须要设定不同的协作流程。比方层次模型式的工作流,而这在曾经的集中式系统中是无法实现的。
思想
- 直接记录快照,而非差异比較
这类系统(CVS,Subversion。Perforce,Bazaar 等等)每次记录有哪些文件作了更新,以及都更新了哪些行的什么内容。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFwcHlsZWU2Njg4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" style="background-color:inherit">
实际上,Git 更像是把变化的文件作快照后,记录在一个微型的文件系统中。每次提交更新时。它会纵览一遍全部文件的指纹信息并对文件作一快照,然后保存一个指向这次快照的索引。为提高性能。若文件没有变化。Git 不会再次保存。而仅仅对上次保存的快照作一链接。
- 近乎全部操作都是本地运行
但假设用 CVCS 的话,差点儿相同全部操作都须要连接网络。由于 Git 在本地磁盘上就保存着全部当前项目的历史更新。所以处理起来速度飞快。
相同,在回家的路上,不用连接 VPN 你也能够继续工作。
- 时刻保持数据完整性
换句话说。不可能在你改动了文件或文件夹之后,Git 一无所知。这项特性作为 Git 的设计哲学,建在总体架构的最底层。所以假设文件在传输时变得不完整,或者磁盘损坏导致文件数据缺失,Git 都能马上察觉。
该字串由 40 个十六进制字符(0-9 及 a-f)组成。
- 多数操作仅加入数据
- 文件的三种状态
- 在工作文件夹中改动某些文件。
- 对改动后的文件进行快照。然后保存到暂存区域。
- 提交更新。将保存在暂存区域的文件快照永久转储到 Git 文件夹中。
感受
只是,因为一些大神的移植,使得 Windows 下的用户也能够使用。
只是,对于兼容性来说。Windows 环境下的模拟 Git 还是略微差一点的。但这并不意味着 Windows 下 Git 的功能缺失。
仅仅只是在 Windows 下。更easy出一些让人无法预料的问题。当然,这些问题还是能够解决的,就是有点麻烦而已。
另外由于 Windows 下的换行和 Linux 上也不一样,协作开发时也easy出问题。所以在 Windows 上使用 Git 的同学须要加上下面2行配置參数:
这里推荐一篇文章。讲的是怎样在 Eclipse 下使用 Git。文章地址。讲的还是挺具体的,有须要的自己去看一下。
结束语
致力于让大家对 Git 有个主要的了解。当然。这是建立在使用过版本号控制系统的基础之上的。
并且,也不必纠结于究竟使用 SVN 还是使用 Git 的问题上。个人认为。假设是为了学习,那么最好是都了解一下。假设公司里有要求,那么就依照公司里的要求就可以。不是必需两款都使用。依据公司里详细的情况而定。假设,你以后打算向架构师的方向发展的话,那么就要多思考一些了,各种技术、各种工具的优势、劣势,你必须了然于胸,并且,这也是最主要的。
版权声明:本文博主原创文章,博客,未经同意不得转载。
最新文章
- POJ 1852 Ants
- 【转】Linux下打包压缩war和解压war包
- Click Models for Web Search(2) - Parameter Estimation
- sprintf() in c
- CDC ->;>; 在某个SQL Server中开启CDC功能
- Unity3D之UGUI学习笔记(一):UGUI介绍以及Canvas
- POJ3126 Prime Path (bfs+素数判断)
- Apache kafka 工作原理介绍
- [Scala] 实现 NDCG
- Android群英传笔记——第五章:Android Scroll分析
- PE文件常用结构体
- spring El
- liunx centox ssh 配置
- R 的内部机制
- 利用JSON将Map转换为类对象
- 《学习OpenCV(中文版)》
- NPOI导出Excel及使用问题
- python-django开发学习笔记四
- 18-从n个数中选m个
- C#设计模式六大原则——接口隔离
热门文章
- 如何使用SVN协调代源代码,多人同步开发
- 利用动态图层实现数据的实时显示(arcEngine IDynamiclayer)
- IOS RGB颜色转换
- [WASM] Read WebAssembly Memory from JavaScript
- [ACM] ural 1057 Amount of degrees (数位统计)
- 关于Android中设置闹钟的相对比较完善的解决方案
- JScript使用正则表达式的经验
- VC6.0 MFC中WebBrowser控件禁止新窗口弹出的解决办法
- Gora官方范例 分类: C_OHTERS 2015-01-29 16:14 632人阅读 评论(0) 收藏
- markdown + vim