Git: 是一个开源的分布式版本控制系统, 2005 年, BitMover 公司收回 Linux 社区的版本控制 BitKeeper 的使用权, Linus 花了两周时间自己用 C 写了一个分布式版本控制系统, 这就是 Git.
Git 是一种版本控制系统, 是一个命令, 是一种工具.
Github: 是一个基于 git 实现的在线代码仓库, 包含一个网站界面, 向互联网开放, 2008 年出现, 是一个网上的代码托管平台, 注册后可以通过 Git 提交代码到 GitHub, 且免托管代码, 但是代码是
公开的, 如果私有代码, 必须缴费.
GitLab: 是一个用于仓库管理系统的开源项目, 基于 Git 的项目管理软件, 并在此基础上搭建起来的 web 服务, 可以理解为本地私人版本的 GitHub, 用于团队内部的代码托管平台;
Git 和 GitLab 配合, Git 作为版本控制系统和命令工具, GitLab 作为 Git 的代码托管平台托管团队代码;
git 和 svn 的区别:
1.Git 是分布式的, Svn 不是(Svn 是集中式控制);
在没有网络的情况下, 每一个开发人员都能够从服务器 Check out 一份代码, 在自己机器上面克隆一个自己的版本库, 没有网络一样可以 Commit.
2.Git 把内容按元数据方式存储, 而 Svn 是按文件.
Svn 所有的资源控制系统都是把文件的元信息隐藏在一个类似. svn,.cvs 等的文件夹里.
git 目录是处于你的机器上的一个克隆版的版本库, 它拥有中心版本库上所有的东西, 例如标签, 分支, 版本记录等..git 目录的体积大小跟. svn 比较, 你会发现它们差距很大.
3.Git 没有一个全局版本号, 而 SVN 有.
目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征.
4.Git 的内容的完整性要优于 SVN.
5.Git 下载下来后, 在 OffLine 状态下可以看到所有的 Log,SVN 不可以.
6.SVN 必须先 Update 才能 Commit, 忘记了合并时就会出现一些错误, git 还是比较少的出现这种情况.
7. 克隆一份全新的目录以同样拥有五个分支来说, SVN 是同时复製 5 个版本的文件, 也就是说重复五次同样的动作. 而 Git 只是获取文件的每个版本的 元素, 然后只载入主要的 Master 分支, 网上 资料说克隆一个拥有将近一万个提交(commit), 五个分支, 每个分支有大约 1500 个文件的 SVN, 耗了将近一个小时! 而 Git 只用了 1 分钟!
8. 版本库不同.
Svn 只能有一个指定中央版本库. 当这个中央版本库有问题时, 所有工作成员都一起瘫痪直到版本库维修完毕或者新的版本库设立完成. 而 Git 可以有无限个版本库. 或者, 更正确的说法, 每一个 Git 都是一个版本库, 区别是它们是否拥有活跃目录 (Git Working Tree). 如果主要版本库(例如: 置於 GitHub 的版本库) 发生了什麼事, 工作成员仍然可以在自己的本地版本库 (local repository) 提交, 等待主要版本库恢复即可. 工作成员也可以提交到其他的版本库 Svn.
9. 分支不同.
Svn 分支是一个完整的目录, 且这个目录拥有完整的实际文件. 如果工作成员想要开啟新的分支, 那将会影响 "全世界"! 每个人都会拥有和你一样的分支. 如果你的分支是用来进行破坏工作(安检测试), 那将会像传染病一样, 你改一个分支, 还得让其他人重新切分支重新下载;
Git 每个工作成员可以任意在自己的本地版本库开啟无限个分支. 某个开发可以开一个分支, 做他特定的任务. 完全不需担心妨碍其他工作成员. 只要他不合并及提交到主要版本库, 没有一个工作成员会被影响.
10. 提交不同.
在 SVN, 当你提交你的完成品时, 它将直接记录到中央版本库. 当你发现你的完成品存在严重问题时, 你已经无法阻止事情的发生了. 如果网路中断, 你根本没办法提交.
Git 的提交完全属於本地版本库的活动. 而你只需 "推"(git push)到主要版本库即可. Git 的 "推" 其实是在执行 "同步"(Sync), 可以不依赖网络做任何事情, 对分支和合并有更好的支持.
Docker 容器:
Docker 是一个开源的应用容器引擎, 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中, 然后发布到任何流行的 Linux 机器上, 也可以实现虚拟化. 容器是完全使用沙箱机制, 相互之间不会有任何接口.
Docker 的思想来自于集装箱, 可以把货物想成各种应用系统, 把货船想象成各种操作系统环境.
在一艘大船上, 可以把货物规整的摆放起来. 并且各种各样的货物被集装箱标准化了, 集装箱和集装箱之间不会互相影响. 那么我就不需要专门运送水果的船和专门运送化学品的船了. 只要这些货物在集装箱里封装的好好的, 那我就可以用一艘大船把他们都运走.
各种不同的应用系统, 我们通过 docker 容器包装好之后, 可以在不同的操作系统环境中运行. 从 Windows 船搬到 Linux 船, 我们只需要把集装箱搬过来, 直接就可以运行.
Docker 类似于虚拟机, 但是虚拟机是基于虚拟化硬件仿真机制, 对系统要求很高, docker 是容器, 使用共享的操作系统, 这意味着 Docker 在使用系统资源方面比虚拟机管理程序要高效得多. 容器不是对硬件进行虚拟化处理, 而是驻留在单单一个 Linux 实例上. 这反过来意味着, 你可以 "丢弃没有用的 99.9% 的虚拟机垃圾, 剩下一个小巧简洁的胶囊式容器, 里面含有你的应用程序".
Docker 可以用来做软件发布的一个软件管理工具, 用来打包软件运行环境和基于运行环境开发的软件, 打包好的运行环境 (即系统) 和基于运行环境开发的软件会生成一个镜像, 这个镜像可以在任意操作系统发布, 如果系统原来在 Windows 上, 后来想迁移到 Linux 上, 按照我们现有的条件, 是需要去 Linux 上面部署虚拟机, 然后一一配置环境, 再进行测试, 能否正常使用, 但是通过 Docker, 可以利用镜像直接复制一份放到 Linux 上面, 不需要安装虚拟机, 不需要配置任何软件环境.
来源: http://www.92to.com/bangong/2018/08-25/34043476.html