Git - 介绍与安装
笔记
Git 是非常强大的版本管理工具,开发人员必须掌握的一门技术。
2022-02-08 @Young Kbt
# Git概述
Git 是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。
Git 易于学习,占地面积小,性能极快。它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于 Subversion、CVS、Perforce 和 ClearCase 等版本控制工具。
# 何为版本控制
版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。
版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换。
# 为什么需要版本控制
协同修改
- 多人并行不悖的修改服务器端的同一个文件
数据备份
- 不仅保存目录和文件的当前状态,还能够保存每一个提交过的历史状态
版本管理
- 在保存每一个版本的文件信息的时候要做到不保存重复数据,以节约存储空间,提高运行效率。这方面 SVN 采用的是增量式管理的方式,而 Git 采取了文件系统快照的方式
权限控制
对团队中参与开发的人员进行权限控制
对团队外开发者贡献的代码进行审核,这是 Git 独有
历史记录
查看修改人、修改时间、修改内容、日志信息
将本地文件恢复到某一个历史状态
分支管理
- 允许开发团队在工作过程中多条生产线同时推进任务,进一步提高效率
# 版本控制工具
集中式版本控制工具
CVS、SVN、VSS ......
集中化的版本控制系统诸如 CVS、SVN 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。多年以来,这已成为版本控制系统的标准做法。
这种做法带来了许多好处,每个人都可以在一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松掌控每个开发者的权限,并且管理一个集中化的版本控制系统,要远比在各个客户端上维护本地数据库来得轻松容易。
事分两面,有好有坏。这么做显而易见的缺点是中央服务器的单点故障。如果服务器宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。
分布式版本控制工具
Git、Mercurial、Bazaar、Darcs ......
像 Git 这种分布式版本控制工具,客户端提取的不是最新版本的文件快照,而是把代码仓库完整地镜像下来(本地库)。这样任何一处协同工作用的文件发生故障,事后都可以用其他客户端的本地仓库进行恢复。因为每个客户端的每一次文件提取操作,实际上都是一次对整个文件仓库的完整备份。
分布式的版本控制系统出现之后,解决了集中式版本控制系统的缺陷:
- 服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的)
- 每个客户端保存的也都是整个完整的项目(包含历史记录,更加安全)
# Git简介
# Git简史
# Git优势
大部分操作在本地完成,不需要联网
完整性保证
尽可能添加数据而不是删除或修改数据
分支操作非常快捷流畅
与 Linux 命令全面兼
# Git结构
Git 本地结构分为:
- 工作区,即我们写的代码文件
- 暂存区,通过
git add
指令将代码文件添加到暂存区 - 本地库,通过
git commit
指令将暂存区的代码文件添加到本地库 - 远程库,通过
git push
指令将本地库的代码文件上传到远程库,即备份到云端
# 代码托管中心
代码托管中心的任务:维护远程库。
局域网环境下
- GitLab 服务器
外网环境下
GitHub(国外)
Gitee 码云(国内)
# Git下载与安装
官网地址:https://git-scm.com/ (opens new window)
官网下载地址:https://git-scm.com/download (opens new window)
这里演示 Windows 的安装步骤:
- 安装到一个没有中文,没有空格的目录下,不建议放在 C 盘
- 默认值
- 建议选择 Vim 编辑器,也就是 Linux 使用的编辑器
- 默认分支名设置,选择让 Git 决定,分支名默认为 master,下一步
- 建议不修改 PATH 环境变量,否则一些环境变量无法使用
- 使用默认值,即 OpenSSL 库,限制性低
- 选择第一个默认值
- 选择 Git 提供的终端,不要合并到 CMD 终端,否则 Git 的一些命令会覆盖 CMD 的命令
- 选择 Git pull 合并的模式,选择默认,然后下一步
- 选择 Git 的凭据管理器,选择默认的跨平台的凭据管理器,然后下一步
- 其他配置,选择默认设置,然后下一步
- 实验室功能,技术还不成熟,有已知的 bug,不要勾选,然后点击右下角的 Install 按钮,开始安装 Git
自此,安装成功。
# Git安装验证
在 Git Bash 终端里输入 git --version 查看 git 版本,如图所示,说明 Git 安装成功。
# 本地库和远程库
# 团队内部协作
当第一个本地库 push
到远程库时,第二个本地库就可以 clone
到自己,当修改了一些内容后,第二个本地库先加入团队,然后重新 push
到远程库,然后第一个本地库就可以 pull
更新自己。
# 跨团队协作
当第一个本地库和第二个本地库需要第三个本地库的帮忙,那么可以让第三个本地库 fork
到自己的远程库,然后 clone
到自己,修改好代码后重新 push
到自己的远程库,接着 pull request
给第一个远程库,此时并不是立即合并,而是由第一个本地库进行审核无误,再合并,最后第一个本地库和第二个本地库通过 pull 更新自己。