2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

Git 到底算不算程序员必备技能?

  • 2019-01-04
  • 本文字数:1731 字

    阅读完需:约 6 分钟

Git到底算不算程序员必备技能?

因为各种原因,国内社交平台有关 Git 和其他版本管理工具的口水战一直没停,因为版本控制是必备需求,所以程序员热衷就此表达自己的看法:




无论是自己写代码还是在企业工作,版本控制都是程序员的必备技能。经过多年发展,现在使用比较广泛的版本控制工具有 Git、SVN、Perforce、Hg、TFS 等。可能是由于 Github 和 Linus 的原因,Git 成为主流分布式版本控制系统,但国内不乏还在使用 SVN 的大型互联网企业。在这种情况下,程序员有必要花时间学习 Git 吗?

Git 与 SVN 对比

虽然有很多版本控制工具,但 SVN 和 Git 是使用范围最广泛的集中式和分布式工具代表。就个人开发者而言,不会使用 Git 意味着无法充分利用 Github 这个全球最大的开源网站,当然,个人通常不会选择商业化版本控制工具。在这种背景下,如果所在公司使用 SVN,个人程序员是否有必要花时间自学 Git 呢?


当然,可能会有人质疑:2019 年都到了,还有公司在使用 SVN 吗?答案是不仅有,而且不少,比如腾讯。说到底,Git 和 SVN 不过是一个版本控制管理工具,并没有哪个一定更好的说法,甚至个别程序员不过是把 Git 当做 SVN 在用。


SVN 是集中式版本控制系统的代表,其版本库集中存放在中央服务器,程序员使用个人电脑从中央服务器获取最新版本,并将更新后版本推送到中央服务器。集中式版本控制系统的通病是必须联网才可以工作,如果是局域网还好,带宽够大,速度够快;如果是互联网且网速较慢的话,提交一个 10M 文件可能就需要 5 分钟。当然,出于安全等多方面因素考虑,企业内部有自己的局域网很正常。


Git 是分布式版本控制的代表,没有明确的中央服务器概念,每个程序员的电脑上都有完整的版本库,只需要将更改互相推送给对方即可。一旦其中某个版本丢失,只需要从其他电脑上复制一份即可,相当于互相备份的概念。


相比 SVN,Git 的最大优势可能是分支管理,这非常契合开源项目的需求,但不少使用 Git 的程序员没有最大限度利用这一优势,国内程序员对开源社区的贡献也相对较低。SVN 的主要优势是目录级别权限控制,可以 Checkout 子目录,方便公司或团队管理,不少云供应商也提供云端的 SVN 相关工具。


SVN 与 Git 的使用场景本身不尽相同,因此并不存在高低之分。但就现状而言,程序员与开源项目的接触越来越多,企业也越来越喜欢使用开源项目,即便公司内部使用 SVN,但 Git 也会成为程序员的一项必备技能,毕竟在 Github 上互相交流是需要的,但 Git 在实际使用中还是存在很多问题。

Git 存在的问题

Git 本身的复杂性就不在此赘述,基础入门可能只需要简单培训,但要想熟练使用并挖掘最大优势着实需要费一番功夫,即便是 Git 专家也不会轻易推荐程序员使用 Git 作为入门工具,很多经验丰富的程序员使用 Git 时也需要查看帮助。OOPSLA16 有一篇论文专门分析了 Git 的问题,MIT 计算机科学和人工智能实验室的研究团队设计了一款叫做 Gitless 的新工具,感兴趣的可以自行搜索。


在存放巨型项目、大型二进制文件以及嵌套方面,Git 一直存在问题。GVFS、Git LFS 倒是可以解决现阶段的部分问题,但性能和生态支持还不足够。此外,Git 的概念是比较清楚的,但指令非常混乱,Git 没有中央控制服务器,GitHub 和本地 Git 库平等,没有针对目录和文件夹的权限控制。由于两边对等,所以 push、pull、remote branch 这些概念其实很麻烦,用起来也不方便。


只能说,Git 目前确实存在一些问题,但这些问题不影响程序员的常规使用。反之,如果只是把 Git 当做 SVN 用,并没有发挥 Git 的优势。

总结

通过社交平台的言论对比,大部分程序员认为即便公司使用其他版本控制工具,个人还是很有必要学习 Git,毕竟使用开源项目难免需要在社区交流探讨问题。但是,无论选择哪款工具都没有高低贵贱之分,使用 SVN 也不代表落后;其次,Git 目前的支持越来越完善,周边生态也逐渐强大,已经成为主流选择,出于日后的职业发展考虑,程序员起码应该先行入门 Git。


课程推荐


Git 是目前最流行的版本控制系统,GitHub 和 GitLab 是当前最流行的代码托管平台,熟练掌握 Git,可以说是程序员必备的技能。很多人问我,如何快速掌握 Git?这里推荐一下携程代码负责人苏玲在极客时间开的 60 讲视频课《玩转 Git 三剑客》,带你深入掌握 Git、GitHub 和 GitLab。


点击试看或订阅《玩转 Git 三剑客》


2019-01-04 08:208391
用户头像
赵钰莹 极客邦科技 总编辑

发布了 894 篇内容, 共 677.3 次阅读, 收获喜欢 2694 次。

关注

评论

发布
暂无评论
发现更多内容

旧貌换新颜:闪迪创作者系列助力修复师用视频为古书画按下‘重启键’

极客天地

VL 语言:AI 编程的通用语义桥 —— 连接自然语言与机器指令

代码制造者

LLM AI编程

YashanDB|使用触发器复制 varchar(4000 char) 数据出现乱码问题的处理方案

数据库砖家

数据库

Android App 的上线流程

北京木奇移动技术有限公司

软件外包公司 APP外包公司 APP开发公司

【HarmonyOS NEXT】多目标产物构建实践

深海的鲸同学 luvi

RAG越来越不准?你可能忽略了“元数据”的力量

电子尖叫食人鱼

Java 数据库 前端

数据中心里的AI:从幕后工具到智能大脑的蜕变

ScaleFlux

国产操作系统定义以及品牌汇总

行云管家

信创 国产化 国产操作系统

来了!520这场发布会将开启“企业级”迈向大模型时代的大门!

奇点云

YashanDB 报错:YAS-04003 maximum number of open cursors 的处理方法

数据库砖家

数据库

(WEB CAD API)网页CAD实现圆孔标记功能

WEB CAD SDK

打破算力瓶颈!起底百度智能云高性能存储加速系统如何让昆仑芯3万卡集群火力全开

百度Geek说

CodeBuddy暴改漏洞实录

VyrnSynx

CodeBuddy首席试玩官

因 Druid 配置导致 YashanDB 报 YAS-04003 打开游标数过多的问题分析

数据库砖家

数据库

合合信息亮相2025中国图象图形大会,聚焦大模型时代的伪造图像检测

合合技术团队

人工智能 算法 图像识别 #大数据

DBeaver 执行多条 SQL 报错 YAS-04209 的解决方式

数据库砖家

数据库

全平台开源即时通讯IM聊天框架MobileIMSDK的服务端开发指南,支持鸿蒙NEXT

JackJiang

鸿蒙 网络编程 即时通讯 IM

DePIN需要什么样的公链?

PowerVerse

区块链+ Solana DePIN

第六章: SEO与交互指标

溪抱鱼

typescript SEO

亚洲消费电子展|低成本获客秘籍,助力预算敏感型企业逆袭

AIOTE智博会

联想携手ISV“行业私厨”,让智能体落地实践端上行业“餐桌”

脑极体

AI

KET口语考试APP的开发

北京木奇移动技术有限公司

软件外包公司 APP外包公司 KET口语考试

BOM都没整明白,就别抱怨生产一团糟了!

积木链小链

数字化转型 BOM 智能制造 生产管理

【HarmonyOS 5】App Linking 应用间跳转详解

深海的鲸同学 luvi

鸿蒙 HarmonyOS HarmonyOS NEXT 实践分享

【等保问题解答】信息系统安全等级保护三级一年几次?有法律依据吗?

行云管家

网络安全 等保 等级保护 等保测评

Blender 入门教程(三):骨骼绑定

北桥苏

建模 blender

京东拍立淘图片搜索 API 接入实践:从图像识别到商品匹配的技术实现

tbapi

京东API 京东图片搜索接口 京东拍立淘API 京东图片API

高性能、高可用的 Lustre 解决方案:使用 xiRAID 4.1 在双节点共享 NVMe 环境下

Sergey Platonov

性能测试 Lustre 高可用性 安装指南

SEO与交互指标 二

溪抱鱼

typescript Google SEO

YashanDB 使用 exp 导出数据时报 YAS-00402 错误的处理思路

数据库砖家

数据库

时序数据库 IoTDB 集成 DataEase,又一可视化交互选择!

Apache IoTDB

Git到底算不算程序员必备技能?_语言 & 开发_赵钰莹_InfoQ精选文章