程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

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

    • RabbitMQ
  • 服务器

    • Nginx
  • Python 基础

    • Python基础
  • Python 进阶

    • 装饰器与生成器
    • 异常处理
    • 标准库精讲
    • 模块与包
    • pip包管理工具
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
前端 (opens new window)
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

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

    • RabbitMQ
  • 服务器

    • Nginx
  • Python 基础

    • Python基础
  • Python 进阶

    • 装饰器与生成器
    • 异常处理
    • 标准库精讲
    • 模块与包
    • pip包管理工具
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
前端 (opens new window)
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • 依赖管理 - Maven

  • 开发管理 - Git

    • Git - 介绍与安装
      • Git概述
        • 何为版本控制
        • 为什么需要版本控制
        • 版本控制工具
      • Git简介
        • Git简史
        • Git优势
        • Git结构
        • 代码托管中心
        • Git下载与安装
        • Git安装验证
        • Git 环境变量配置
      • 本地库和远程库
        • 团队内部协作
        • 跨团队协作
    • Git - 常用命令
    • Git - 基本原理
    • Git - SSH免密登录
    • Git - IDEA集成
    • Git - 上传文件到远程仓库完整流程
    • Git - 自建代码托管平台
    • Git - Commit常用表情
  • Git小乌龟教程

  • 代码管理
  • 开发管理 - Git
scholar
2023-12-08
目录

Git - 介绍与安装

笔记

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

2024-01-04 @scholar

  • Git概述
    • 何为版本控制
    • 为什么需要版本控制
    • 版本控制工具
  • 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

# Git 环境变量配置

在安装 Git 时,有时系统的 PATH 环境变量中不会自动包含 Git 的可执行文件路径。为了在命令提示符(CMD)或其他终端中直接使用 Git 命令,需要手动将 Git 安装目录下的 cmd 文件夹添加到系统 PATH 中。通常操作步骤如下:

  1. 打开环境变量设置

    • 在 Windows 系统中,右键点击“此电脑”(或“我的电脑”),选择“属性”;
    • 点击左侧的“高级系统设置”,在弹出的对话框中选择“环境变量”。
  2. 编辑 PATH 变量

    • 在“系统变量”区域找到名为 Path 的变量,选中后点击“编辑”;

    • 点击“新建”,然后输入 Git 安装目录下的 cmd 文件夹路径。例如,如果 Git 安装在 C:\Program Files\Git 目录下,则添加以下路径:

      C:\Program Files\Git\cmd
      
      1

      注意: 推荐添加 cmd文件夹路径而不是 bin文件夹路径,这样可以确保在 CMD 等终端中正确调用 Git 命令。

  3. 保存设置并验证

    image-20250202173554129

    如果显示 Git 的版本信息,则说明配置成功,可以在任意终端中直接使用 Git 命令。

# 本地库和远程库

# 团队内部协作

image-20220208131534620

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

# 跨团队协作

image-20220208131713222

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

编辑此页 (opens new window)
上次更新: 2025/02/03, 00:09:13
Maven 依赖排除插件
Git - 常用命令

← Maven 依赖排除插件 Git - 常用命令→

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式