前言

  • 因为工作中目前要大量使用 Git,虽然之前已经会用了,但没有系统的总结过,现在来重新总结
  • 概念篇会直接搬网上的教程,比如:菜鸟、廖雪峰、老张、中文版Git,就不再花时间自己总结过概念了

Git 是什么?

  • Git是目前世界上最先进的分布式版本控制系统(没有之一),用于敏捷高效地处理任何或小或大的项目
  • Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件
  • Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持

什么是集中式版本控制系统?

  • 版本库是集中存放在中央服务器的
  • 而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活
  • 干完活了,再把自己的活推送给中央服务器
  • 中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆

缺点

  • 集中式版本控制系统最大的毛病就是必须联网才能工作
  • 如果在局域网内还好,带宽够大,速度够快
  • 可如果在互联网上,遇到网速慢的话,可能提交一个10M的文件就需要5分钟,体验极其不好

什么是分布式版本控制系统?

  • 分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,就不需要联网了
  • Git 这种系统,客户端并不只提取最新版本的文件快照, 而是把代码仓库完整地镜像下来,包括完整的历史记录
  • 那任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复, 因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份
  • 它还以指定和若干不同的远端代码仓库进行交互,因此你就可以在同一个项目中,分别和不同工作小组的人相互协作,可以根据需要设定不同的协作流程

Git 和 SVN 的区别

  • Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别

  • Git 把内容按元数据方式存储,而 SVN 是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里

  • Git 分支和 SVN 的分支不同:分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录

  • Git 没有一个全局的版本号,而 SVN 有:目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征

  • Git 的内容完整性要优于 SVN:Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏

Git 的工作流程

最新文章

  1. css实现一行文字居中,多行文字居左
  2. Canvas里绘制矩阵文字
  3. mydumper 和 myloader 的使用
  4. Web之路笔记之四
  5. 基于ticket的rw锁
  6. 封装application类
  7. android studio SDK版本的调节
  8. Centos6.5 64linux系统基础优化(一)
  9. c语言学习之基础知识点介绍(十三):枚举的介绍和使用
  10. Local System、Local Service與Network Service
  11. android分享到新浪微博,认证+发送微博,
  12. 如何使用Storyboard创建UIPageViewController
  13. VAST3.0规范
  14. java类初始化,使用构造方法
  15. 基于Xilinx FPGA的视频图像采集系统
  16. 【Java基础】【25多线程(下)&GUI】
  17. rhel配置网络yum源
  18. Python在终端通过pip安装好包以后,在Pycharm中依然无法使用的解决办法
  19. Dividing the numbers CodeForces - 899C (构造)
  20. 【[AHOI2005]洗牌 题解

热门文章

  1. 八数码难题之 A* 算法
  2. [解决方案]docker: Error response from daemon: OCI runtime create failed
  3. JavaScript高级程序设计(第4版)-第一章学习
  4. React Class组件生命周期
  5. Python--数据存储
  6. docker-01
  7. Redis配置及攻击利用
  8. 当任意文件上传偶遇Safedog
  9. L298N使用资料
  10. LuoguP3167通配符匹配