当前位置: 首页 > news >正文

Git版本号控制 为什么那么复杂 头大 (忍不住强烈吐槽)

想把自己的源代码保存到云端。想到了用Github.com,然后便開始看怎么使用GIT。

一開始,没有接触之前,想的非常easy的。应该就跟SVN几乎相同吧。写好了提交就能够了。

只是使用了之后才发现根本就不是这样。并且阅读了官网的介绍说明手冊,更是认为不仅不是想象的那样,反而根本就难以理解,甚至无法理解。


GIT官网的一段描写叙述:

在 Git 中的绝大多数操作都仅仅须要訪问本地文件和资源,不用连网

但假设用 CVCS 的话,几乎相同全部操作都须要连接网络。由于 Git 在本地磁盘上就保存着全部当前项目的历史更新,所以处理起来速度飞快。

举个样例。假设要浏览项目的历史更新摘要,Git 不用跑到外面的server上去取数据回来,而直接从本地数据库读取后展示给你看。所以不论什么时候你都能够立即翻阅。无需等待。假设想要看当前版本号的文件和一个月前的版本号之间有何差异,Git 会取出一个月前的快照和当前文件作一次差异运算,而不用请求远程server来做这件事。或是把老版本号的文件拉到本地来作比較。

用 CVCS 的话。没有网络或者断开 VPN 你就无法做不论什么事情。但用 Git 的话。就算你在飞机或者火车上。都能够很愉快地频繁提交更新。等到了有网络的时候再上传到远程仓库。相同,在回家的路上。不用连接 VPN 你也能够继续工作。

换作其它版本号控制系统,这么做差点儿不可能,抑或很麻烦。比方 Perforce,假设不连到server,差点儿什么都做不了(译注:默认无法发出命令 p4 edit file 開始编辑文件,由于 Perforce 须要联网通知系统声明该文件正在被谁修订。

但实际上手工改动文件权限能够绕过这个限制,仅仅是完毕后还是无法提交更新。);假设是 Subversion 或 CVS,尽管能够编辑文件,但无法提交更新,由于数据库在网络上。看上去好像这些都不是什么大问题,但实际体验过之后,你就会惊喜地发现,这事实上是会带来非常大不同的。

地址:http://www.git-scm.com/book/zh/%E8%B5%B7%E6%AD%A5-Git-%E5%9F%BA%E7%A1%80#%E8%BF%91%E4%B9%8E%E6%89%80%E6%9C%89%E6%93%8D%E4%BD%9C%E9%83%BD%E6%98%AF%E6%9C%AC%E5%9C%B0%E6%89%A7%E8%A1%8C



1)不用联网就能够使用?

SVN不用联网也是能够使用的。为什么GIT还得特别强调自己不用联网就能够使用。


2)不用联网就能够使用?

这个让人实在是无法理解。不用联网就能够使用。假如不联网的时间长达1天、10天、1年甚至10年,你每天自己改动本地的。10年之后才提交,那还算是版本号控制吗?

别人都在疯狂的提交代码更新。而你却一直都是在本地编辑改动自己的,提交到本地,可是不push到远程。这样1年、10年,再联网提交过去。

git还能够奇妙到帮你自己主动合并了????????????????????????????????????????????????????






相关文章:

  • Centos 6.x系统
  • 智能制造企业共同打造智慧城市
  • JPA測试实例
  • Shiro随笔(2:探讨FilterChainManager)
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • SonarQube 安装
  • Spark RDDs vs DataFrames vs SparkSQL
  • CS61B LAB1
  • mysql HA 负载均衡
  • linux下如何判断oracle数据库tns是否设置正常
  • bzoj 2038 [2009国家集训队]小Z的袜子(hose) 莫队算法
  • VS2008让Release配置也能调试起来~
  • 图解Activity启动流程,进阶高级
  • 面向对象原则之一 迪米特法则
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • hexo+github搭建个人博客
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • Debian下无root权限使用Python访问Oracle
  • golang 发送GET和POST示例
  • in typeof instanceof ===这些运算符有什么作用
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • oldjun 检测网站的经验
  • ReactNativeweexDeviceOne对比
  • Redis 懒删除(lazy free)简史
  • VUE es6技巧写法(持续更新中~~~)
  • Yeoman_Bower_Grunt
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 服务器之间,相同帐号,实现免密钥登录
  • 复习Javascript专题(四):js中的深浅拷贝
  • 让你的分享飞起来——极光推出社会化分享组件
  • 如何编写一个可升级的智能合约
  • 入门级的git使用指北
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 算法之不定期更新(一)(2018-04-12)
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • ![CDATA[ ]] 是什么东东
  • #{} 和 ${}区别
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • (rabbitmq的高级特性)消息可靠性
  • (八)Spring源码解析:Spring MVC
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (已解决)什么是vue导航守卫
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .Net FrameWork总结
  • .Net IOC框架入门之一 Unity