向西项目管理工具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 的问题上。个人认为。假设是为了学习,那么最好是都了解一下。假设公司里有要求,那么就依照公司里的要求就可以。不是必需两款都使用。依据公司里详细的情况而定。假设,你以后打算向架构师的方向发展的话,那么就要多思考一些了,各种技术、各种工具的优势、劣势,你必须了然于胸,并且,这也是最主要的。
版权声明:本文博主原创文章,博客,未经同意不得转载。
向西项目管理工具Git一片的更多相关文章
- 强大得分布式项目管理工具Git
---恢复内容开始--- 强大的分布式管理工具-Git(一) 前言:最近忙着写项目,在期间呢,用的是git管理,由于一个项目的管理是很重要得,所以整理了一篇关于git得博客跟大家分享一下.大家都知道, ...
- 向西项目管理工具Maven一片
前言 相信仅仅要做过 Java 开发的童鞋们,对 Ant 想必都不陌生,我们往往使用 Ant 来构建项目,尤其是涉及到特别繁杂的工作量.一个 build.xml 可以完毕编译.測试.打包.部署等非常多 ...
- Visual Studio+TFS--强大的项目管理工具
一.前言 微软的Visual Studio非常强大,可以无缝结合Git或自家的TFS(Team Foundation Server),进行项目管理非常方便,从需求分析.开发.测试.维护,几乎可以贯穿软 ...
- IT项目管理工具总结(转载)
以前用过一个cs版的忘记叫啥名了,还用个禅道,感觉一般“5. 测试管理: 项目软件缺陷Bug状态跟踪”在公司内部自己测试或者试用期上线后后期维护阶段用的多,有的公司单独做个系统让用户提问题来修改,也是 ...
- 版本管理工具Git(一)简要介绍
版本管理工具不但可以备份而且还能记录版本,也就是同一个东西不同时期的状态同时可以跟踪追溯.版本管理工具由CVS.SVN.Git.GitHub. 最早的版本管理工具CVS,因为多人开发项目导致工作很难协 ...
- 版本控制工具 - Git
版本控制工具 - Git 安装完成后,打开Git Bash,这是一个命令行工具,用于操作仓库和仓库的文件.你可以通过命令将已经存在的项目变成仓库,也可以重新创建一个新项目再通过命令将其变成仓库,还可以 ...
- [原创] debian 9.3 搭建Jira+Confluence+Bitbucket项目管理工具(四) -- 安装bitbucket 5.7.0
[原创] debian 9.3 搭建Jira+Confluence+Bitbucket项目管理工具(四) -- 安装bitbucket 5.7.0 安装Bitbucket的教程, 网上能找见的不多, ...
- IT项目管理分享7个开源项目管理工具
在一项调查中,有 71% 的组织表示他们在开发过程中会用到敏捷方法. 此外,用敏捷方法管理项目比传统方法管理项目成功率高 28%.在这次工具推荐中,我们从一些比较受欢迎的开源项目管理工具中摘取了支持敏 ...
- masterlab 敏捷项目管理工具
masterlab 是一个参考了gitlab 以及jira 的开源项目管理工具,基于php开发,同时官方也提供了一个 docker-compose 运行的项目 clone 代码 git clone ...
随机推荐
- 【重拾Effective Java】一
之前看这本<Effective Java(第二版)>都是非常早曾经了.这本书确实是本好书.须要细嚼慢咽,每次看都有不同的体验. 在此写博客巩固一下. 第一章.创建和销毁对象 考虑用静态工厂 ...
- Spring配置文件头及xsd文件版本
最初Spring配置文件的头部声明如下: Xml代码 <?xml version="1.0" encoding="UTF-8"?> <!D ...
- 任哲<<μC/OS>>
从第二章开始啦: 程序控制块(TCB) 重要概念 相当于对应程序块的学生证,学号,,, 上面的图是一个简单的程序控制块,还会有复杂的程序控制块,也许是嵌套的两级的: 链表就相当于老师手中的花名册, ...
- ZOJ 2405 Specialized Four-Digit Numbers
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1405 要求找出4位数所有10进制.12进制.16进制他们各位数字之和相等. # ...
- Linux 系统 杀Oracle 进程
Linux 系统 杀Oracle 进程 杀掉进程用此方法比较好,能保证杀得干净,而不是用SQL alter system kill kill -9 `ps -ef|grep "oracle ...
- 数据类型总结——Number(数值类型)
相关文章 简书原文:https://www.jianshu.com/p/9fb573ef10da 数据类型总结——概述:https://www.cnblogs.com/shcrk/p/9266015. ...
- php$get中文汉字参数乱码
最近写了个简单的页面,从浏览器中传入中文参数(test.php?name=测试),不论怎么设置utf-8的页面中都显示乱码,google了一把也查到了不少解决办法,但是问题的原因到底是什么呢?没有人深 ...
- USB 3.0规范中译本 第3章 USB 3.0体系结构概览
本文为CoryXie原创译文,转载及有任何问题请联系cory.xie#gmail.com. 本章呈现USB 3.0体系结构和关键概念的概览.USB 3.0与前面版本的USB类似,因为它是线缆总线,支持 ...
- js中动态创建json,动态为json添加属性、属性值的实例
如下所示: ? 1 2 3 4 5 6 7 var param = {}; for(var i=0;i<fields.length;i++){ var field = fields[i]; ...
- CF 559B(Equivalent Strings-构造法)
B. Equivalent Strings time limit per test 2 seconds memory limit per test 256 megabytes input standa ...