Young Kbt blog Young Kbt blog
首页
  • java基础

    • Java基础
    • Java集合
    • Java反射
    • JavaJUC
    • JavaJVM
  • Java容器

    • JavaWeb
  • Java版本新特性

    • Java新特性
  • SQL 数据库

    • MySQL
    • Oracle
  • NoSQL 数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • ActiveMQ
    • RabbitMQ
    • RocketMQ
    • Kafka
  • 进阶服务

    • Nginx
  • Spring
  • Spring Boot
  • Spring Security
  • 设计模式
  • 算法
  • 知识
  • 管理

    • Maven
    • Git
  • 部署

    • Linux
    • Docker
    • Jenkins
    • Kubernetes
  • 进阶

    • TypeScript
  • 框架

    • React
    • Vue2
    • Vue3
  • 轮子工具
  • 项目工程
  • 友情链接
  • 本站

    • 分类
    • 标签
    • 归档
  • 我的

    • 收藏
    • 关于
    • Vue2-Admin (opens new window)
    • Vue3-Admin(完善) (opens new window)
GitHub (opens new window)

Shp Liu

朝圣的使徒,正在走向编程的至高殿堂!
首页
  • java基础

    • Java基础
    • Java集合
    • Java反射
    • JavaJUC
    • JavaJVM
  • Java容器

    • JavaWeb
  • Java版本新特性

    • Java新特性
  • SQL 数据库

    • MySQL
    • Oracle
  • NoSQL 数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • ActiveMQ
    • RabbitMQ
    • RocketMQ
    • Kafka
  • 进阶服务

    • Nginx
  • Spring
  • Spring Boot
  • Spring Security
  • 设计模式
  • 算法
  • 知识
  • 管理

    • Maven
    • Git
  • 部署

    • Linux
    • Docker
    • Jenkins
    • Kubernetes
  • 进阶

    • TypeScript
  • 框架

    • React
    • Vue2
    • Vue3
  • 轮子工具
  • 项目工程
  • 友情链接
  • 本站

    • 分类
    • 标签
    • 归档
  • 我的

    • 收藏
    • 关于
    • Vue2-Admin (opens new window)
    • Vue3-Admin(完善) (opens new window)
GitHub (opens new window)
  • 版本管理 - Maven

  • 开发管理 - Git

    • Git - 介绍与安装
      • Git概述
        • 何为版本控制
        • 为什么需要版本控制
        • 版本控制工具
      • Git简介
        • Git简史
        • Git优势
        • Git结构
        • 代码托管中心
        • Git下载与安装
        • Git安装验证
      • 本地库和远程库
        • 团队内部协作
        • 跨团队协作
    • Git - 常用命令
    • Git - 基本原理
    • Git - SSH免密登录
    • Git - IDEA集成
    • Git - 自建代码托管平台
    • Git - Commit常用表情
  • 操作系统 - Linux

  • 容器部署 - Docker

  • 持续集成 - Jenkins

  • 容器管理 - kubernetes

  • 工具
  • 开发管理 - Git
Young Kbt
2022-02-08
目录

Git - 介绍与安装

笔记

Git 是非常强大的版本管理工具,开发人员必须掌握的一门技术。

2022-02-08 @Young Kbt

  • Git概述
    • 何为版本控制
    • 为什么需要版本控制
    • 版本控制工具
  • Git简介
    • Git简史
    • Git优势
    • Git结构
    • 代码托管中心
    • Git下载与安装
    • Git安装验证
  • 本地库和远程库
    • 团队内部协作
    • 跨团队协作

# Git概述

Git 是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。

Git 易于学习,占地面积小,性能极快。它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于 Subversion、CVS、Perforce 和 ClearCase 等版本控制工具。

# 何为版本控制

版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。

版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换。

# 为什么需要版本控制

协同修改

  • 多人并行不悖的修改服务器端的同一个文件

数据备份

  • 不仅保存目录和文件的当前状态,还能够保存每一个提交过的历史状态

版本管理

  • 在保存每一个版本的文件信息的时候要做到不保存重复数据,以节约存储空间,提高运行效率。这方面 SVN 采用的是增量式管理的方式,而 Git 采取了文件系统快照的方式

权限控制

  • 对团队中参与开发的人员进行权限控制

  • 对团队外开发者贡献的代码进行审核,这是 Git 独有

历史记录

  • 查看修改人、修改时间、修改内容、日志信息

  • 将本地文件恢复到某一个历史状态

分支管理

  • 允许开发团队在工作过程中多条生产线同时推进任务,进一步提高效率

# 版本控制工具

集中式版本控制工具

CVS、SVN、VSS ......

集中化的版本控制系统诸如 CVS、SVN 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。多年以来,这已成为版本控制系统的标准做法。

这种做法带来了许多好处,每个人都可以在一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松掌控每个开发者的权限,并且管理一个集中化的版本控制系统,要远比在各个客户端上维护本地数据库来得轻松容易。

事分两面,有好有坏。这么做显而易见的缺点是中央服务器的单点故障。如果服务器宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。

image-20220208125734133

分布式版本控制工具

Git、Mercurial、Bazaar、Darcs ......

像 Git 这种分布式版本控制工具,客户端提取的不是最新版本的文件快照,而是把代码仓库完整地镜像下来(本地库)。这样任何一处协同工作用的文件发生故障,事后都可以用其他客户端的本地仓库进行恢复。因为每个客户端的每一次文件提取操作,实际上都是一次对整个文件仓库的完整备份。

分布式的版本控制系统出现之后,解决了集中式版本控制系统的缺陷:

  1. 服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的)
  2. 每个客户端保存的也都是整个完整的项目(包含历史记录,更加安全)

image-20220208125829779

# Git简介

# Git简史

image-20220208130020319

# Git优势

  • 大部分操作在本地完成,不需要联网

  • 完整性保证

  • 尽可能添加数据而不是删除或修改数据

  • 分支操作非常快捷流畅

  • 与 Linux 命令全面兼

# Git结构

image-20220208130247932

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 的安装步骤:

  1. 安装到一个没有中文,没有空格的目录下,不建议放在 C 盘

image-20220208130928257

  1. 默认值

image-20220208145148295

  1. 建议选择 Vim 编辑器,也就是 Linux 使用的编辑器

image-20220208130959086

  1. 默认分支名设置,选择让 Git 决定,分支名默认为 master,下一步

image-20220208145248934

  1. 建议不修改 PATH 环境变量,否则一些环境变量无法使用

image-20220208131059556

  1. 使用默认值,即 OpenSSL 库,限制性低

image-20220208145323669

  1. 选择第一个默认值

image-20220208131214486

  1. 选择 Git 提供的终端,不要合并到 CMD 终端,否则 Git 的一些命令会覆盖 CMD 的命令

image-20220208131241675

  1. 选择 Git pull 合并的模式,选择默认,然后下一步

image-20220208145445582

  1. 选择 Git 的凭据管理器,选择默认的跨平台的凭据管理器,然后下一步

image-20220208145524574

  1. 其他配置,选择默认设置,然后下一步

image-20220208145551318

  1. 实验室功能,技术还不成熟,有已知的 bug,不要勾选,然后点击右下角的 Install 按钮,开始安装 Git

image-20220208145610518

自此,安装成功。

# Git安装验证

在 Git Bash 终端里输入 git --version 查看 git 版本,如图所示,说明 Git 安装成功。

image-20220208145644845

# 本地库和远程库

# 团队内部协作

image-20220208131534620

当第一个本地库 push 到远程库时,第二个本地库就可以 clone 到自己,当修改了一些内容后,第二个本地库先加入团队,然后重新 push 到远程库,然后第一个本地库就可以 pull 更新自己。

# 跨团队协作

image-20220208131713222

当第一个本地库和第二个本地库需要第三个本地库的帮忙,那么可以让第三个本地库 fork 到自己的远程库,然后 clone 到自己,修改好代码后重新 push 到自己的远程库,接着 pull request 给第一个远程库,此时并不是立即合并,而是由第一个本地库进行审核无误,再合并,最后第一个本地库和第二个本地库通过 pull 更新自己。

编辑此页 (opens new window)
#Git
更新时间: 2023/10/23, 10:58:52
Maven - 上传中央仓库
Git - 常用命令

← Maven - 上传中央仓库 Git - 常用命令→

最近更新
01
技术随笔 - Element Plus 修改包名 原创
11-02
02
Reactor - 扩展性
11-02
03
Reactor - 最佳实践
11-02
更多文章>
Theme by Vdoing | Copyright © 2021-2024 Young Kbt | blog
桂ICP备2021009994号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式