不看好 git ,也看不懂为什么那么多人去使用 git
上来就亮明观点,符合我的性格。呵呵呵。
为什么不看好 git 呢?
首先,我们来看看 git 产生的背景。
git 是 Linus 开发的,最初的目的,是为了管理 Linux 系统的源代码。这是一个分层集中式版本控制系统,并非网上人云亦云的分布式版本控制系统。以下作详细说明。
Linux 的开发习惯,与通常软件公司的开发习惯不同:
Linus,或者加上其它少量关键人员,负责 Linux 核心代码的维护,他们可能自己参与开发,也可能接受别人提供的软件包(软件功能增强、改进、或bug修复),合并到已有的代码库里。在接受其他人提供的软件包时,期望对方已进行完整测试、代码没有明显的问题、代码规范也符合相应的规定,不然,这几个关键人员,有权拒绝此软件包加入到Linux 核心代码。并且,同一个功能,可能有多个贡献方来提交软件包,这几个关键人员可选择其中之一(多个贡献方提交的软件包里选一个),加入Linux 核心代码。
单个软件包本身可能也比较复杂,由另一批少量关键人员、加上大量的开发人员进行开发。他们也按上述习惯,在接受其他组织/人提供的更小级别软件包时,期望对方已进行完整测试、代码没有明显的问题、代码规范也符合相应的规定,不然,这几个关键人员,有权拒绝此更小级别软件包加入到此软件包。并且,同一个功能,可能有多个贡献方来提交更小级别软件包,这几个关键人员可选择其中之一(多个贡献方提交的更小级别软件包里选一个),加入此软件包。
当然,有些情况下,软件包的层次会更多。
以上就是分层集中式的开发模式。
问题在于,大多数公司,或者临时/长期组建的软件项目组,都不是按 Linux 核心组的开发习惯,展开工作的。
对于一般公司来说,任何员工的每个小时的工作,都是人力成本,换句俗话来说,都是钱、是费用。为避免因单个程序员电脑硬盘损坏造成的代码丢失,造成公司的费用损失,很多公司要求,每个程序员,每天下班前,都需要 check-in 代码到代码库,那些编译不能通过的部分代码,注释起来,仍要check-in 代码到代码库。
极少有公司去要求:那个谁,你负责的权限模块,全部开发、测试完成后,再放到公司级版本库;那个谁,你负责的订单模块,全部开发、测试完成后,再放到公司级版本库...
因此,Linux 核心代码的管理模式,不具有通用性。
基于 Linux 核心代码的管理模式而开发出来的源代码版本管理工具 git ,也不具有通用性。不适合于大多数公司。
请注意,"分布式"、或"分层集中式"这些词,是时髦的词汇,但绝大部分场合,不需要。
在无需"分布式"的情况下,硬要套用"分布式"的做事方式,只会带来更多的不方便、付出更多的人力成本。
EJB 就是一个很好例子。
单从概念、技术角度,相比之前/同期的同类软件技术/产品/架构, EJB 均是优秀的。被广泛滥用之后,大家都发现,这玩意儿太难用了,无论是开发论坛、员工考勤、企业信息管理、电子商务,还是其他的软件系统/软件工具,绝大多数情况下,EJB 都只会带来技术难度及增加开发工作量。
这还是因为,“分布式”的技术,只适合用于“分布式”的场景下。不具有通用性。
知乎网上,也有很多对比讨论(git vs SVN)。
最明显的一点差别,在于 git 的日常两次提交习惯(第一次提交到本地个人电脑版本库、第二次提交到公司集中版本库),相比 SVN 的一次提交习惯,需要更多的培训、学习、适应时间。
且日常操作,更显麻烦(操作步骤多一倍)。
当然了,对于单个员工来说,学了不合适的时髦技术,可以增强找工作的个人竞争力;对于公司、团队来说,使用了不合适的时髦技术,增大了总体成本、变相降低了公司的竞争力。
值得不值得用,就看站在哪个角度来判断了。
================================================================================================
========================转发请注明来源:https://www.cnblogs.com/jacklondon/ ===========================
================================================================================================
不看好 git ,也看不懂为什么那么多人去使用 git的更多相关文章
- Git复习(五)之多人协作、git push失败、git pull失败
多人协作 多人协作时,大家都会往master和dev分支上推送各自的修改. 现在,模拟一个你的小伙伴,可以在另一台电脑(注意要把SSH Key添加到GitHub)或者同一台电脑的另一个目录下克隆: $ ...
- Linux命令学习神器!命令看不懂直接给你解释!
大家都知道,Linux 系统有非常多的命令,而且每个命令又有非常多的用法,想要全部记住所有命令的所有用法,恐怕是一件不可能完成的任务. 一般情况下,我们学习一个命令时,要么直接百度去搜索它的用法,要么 ...
- 我用 Java 8 写了一段逻辑,同事直呼看不懂,你试试看。。
业务背景 首先,业务需求是这样的,从第三方电商平台拉取所有订单,然后保存到公司自己的数据库,需要判断是否有物流信息,如果有物流信息,还需要再进行上传. 而第三方接口返回的数据是 JSON 格式的,其中 ...
- 对于挑战书上的很久之前都看不懂的DP看懂的突破
突破一..牢记问题概念 并且牢记dp状态方程 突破二..一直有一个求和dp转化成O1dp递推的式子看不懂.. 看不懂的原因是..没有分清求和符号作用的范围 提醒:以后遇到求和符号一定明确其求和的式子的 ...
- QQ地图api里的 地址解析函数 看不懂 javascript_百度知道
QQ地图api里的 地址解析函数 看不懂 javascript_百度知道 QQ地图api里的 地址解析函数 看不懂 javascript 2011-09-18 12:18 匿名 ...
- thinkphp学习笔记10—看不懂的路由规则
原文:thinkphp学习笔记10-看不懂的路由规则 路由这部分貌似在实际工作中没有怎么设计过,只是在用默认的设置,在手册里面看到部分,艰涩难懂. 1.路由定义 要使用路由功能需要支持PATH_INF ...
- Dynamics 365-CRM又报看不懂的错误了
在CRM上执行各种操作,时不时会碰到各种问题,尤其是CRM环境里包含越来越多定制的时候.有的问题在CRM弹出的错误提示框,一目了然:而有的,可能就是简单的提示:SQL Error. 这个时候我们可能都 ...
- 一篇自己都看不懂的Matrix tree总结
Matrix tree定理用于连通图生成树计数,由于博主太菜看不懂定理证明,所以本篇博客不提供\(Matrix\ tree\)定理的证明内容(反正这个东西背结论就可以了是吧) 理解\(Matrix\ ...
- Git入门看这一篇就够了! (转)
Git 的三种状态 Git 有三种状态,你的文件可能处于其中之一: 已提交(committed):数据已经安全的保存在本地数据库中. 已修改(modified):已修改表示修改了文件,但还没保存到数据 ...
随机推荐
- python的time、datetime和calendar
datetime模块主要是用来表示日期的,就是我们常说的年月日时分秒,calendar模块主要是用来表示年月日,是星期几之类的信息,time模块主要侧重点在时分秒,从功能简单来看,我们可以认为三者是一 ...
- Spring Security(二)--WebSecurityConfigurer配置以及filter顺序
“致"高级"工程师(BUG工程师) 一颗折腾的心
- Git实战指南----跟着haibiscuit学Git(第五篇)
笔名: haibiscuit 博客园: https://www.cnblogs.com/haibiscuit/ Git地址: https://github.com/haibiscuit?tab=re ...
- Mac SourceTree配置Beyond Compare
一 首先下载正版的Beyond Compare 地址:https://www.scootersoftware.com/download.php 二 如果bin文件夹下没有bcomp,打开终端命 ...
- 压缩打包介绍、gzip、bzip2、xz压缩工具
第5周第1次课(4月16日) 课程内容: 6.1 压缩打包介绍6.2 gzip压缩工具6.3 bzip2压缩工具6.4 xz压缩工具 6.1 压缩打包介绍 为什么要给文件进行压缩呢?首先压缩和不压缩空 ...
- 阿里云安装mysql
1. ##数据库字符集SHOW VARIABLES LIKE 'character_set_%'; ##数据库校对股则SHOW VARIABLES LIKE 'collation_%'; 2.创建数据 ...
- 利用tp5开发智慧软文发布系统中遇到的一些坑
1. PHP 计算两个时间戳之间相差的时间 假设你两个时间戳为$a,$b; 你可以用$c=$a-$b;(反正就是大的减小的),这时$c就是两个时间间隔的秒数了. 想求两个时间间隔的天数就用:$c/(6 ...
- Oracle SCN 详解
一.简介 scn,system change number 在某个时间点定义数据库已提交版本的时间戳标记,Oracle为每个已提交事务分配一个唯一的scn,scn值是对数据库进行更改的逻辑时间点.sc ...
- RDS关系型数据库 入门 01 创建关系型数据库实例【华为云分享】
[摘要] 关系型数据库(Relational Database Service,简称RDS)是一种基于云计算平台的即开即用.稳定可靠.弹性伸缩.便捷管理的在线关系型数据库服务.RDS具有完善的性能监控 ...
- 一招教你如何修复MySQL slave中继日志损坏问题
[摘要]MySQL的Crash safe slave是指slave crash后,把slave重新拉起来可以继续从Master进行复制,不会出现复制错误也不会出现数据不一致. PS:华为云数据库特惠专 ...