向西项目管理工具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 ...
随机推荐
- ImageView的圆角半径
// 设置imageview的圆角半径 UIImageView *imageView = (UIImageView *)[cell viewWithTag:tag]; imageView.layer. ...
- [Angular] Creating an Observable Store with Rx
The API for the store is really simple: /* set(name: string, state: any); select<T>(name: stri ...
- Auto Layout深入理解,及masonry简单介绍
本篇博客是本人在学习自己主动布局过程中对自己主动布局的理解和整理,分三部分介绍,内容可能会有所反复.见谅. 一.autosizing与Auto Layout对照,及Auto Layout简单介绍 1. ...
- QQ号快速登录漏洞及被盗原理
web安全:QQ号快速登录漏洞及被盗原理 为什么你什么都没干,但QQ空间中却发了很多小广告?也许你的QQ账号已经被盗.本文将讲解一个QQ的快速登录的漏洞. 我前阵子在论坛上看到一个QQ的快速登录的 ...
- object.create(null) 和 {}创建对象的区别
原文 简书原文:https://www.jianshu.com/p/43ce4d7d6151 创建对象的方法 如果要创建一个空的对象,可以使用如下的三种方法 var obj1 = {}; var ob ...
- 建立简单的服务器端程序 分类: B1_JAVA 2013-10-08 21:53 503人阅读 评论(0) 收藏
参考自core java package com.lujinhong.corejava; import java.io.IOException; import java.io.InputS ...
- rabbitMQ服务安装
1.rabbitMQ简介 1.1.rabbitMQ的优点(适用范围)1. 基于erlang语言开发具有高可用高并发的优点,适合集群服务器.2. 健壮.稳定.易用.跨平台.支持多种语言.文档齐全.3. ...
- USB 3.0规范中译本 第3章 USB 3.0体系结构概览
本文为CoryXie原创译文,转载及有任何问题请联系cory.xie#gmail.com. 本章呈现USB 3.0体系结构和关键概念的概览.USB 3.0与前面版本的USB类似,因为它是线缆总线,支持 ...
- NavMesh动态碰撞
今天遇到一个问题,就是怎样处理一些动态的障碍物. NavMesh是能够躲避静态的障碍物.NavMeshObstacle的作用就是动态添加障碍. 可是有个问题,NavMeshObstacle是圆,连椭圆 ...
- JNI:no implementation found in native...
一 javah引发的问题 BUG:D/dalvikvm( 1704): Trying to load lib /data/data/com.ulang/lib/libulangaudio.so 0x ...