第1章 Git概述

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

1.1 版本控制

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

Git - 图1

  • 像 Git 这种分布式版本控制工具,客户端提取的不是最新版本的文件快照,而是把代码仓库完整地镜像下来(本地库)。这样任何一处协同工作用的文件发生故障,事后都可以用其他客户端的本地仓库进行恢复。因为每个客户端的每一次文件提取操作,实际上都是一次对整个文件仓库的完整备份。分布式版本控制系统解决了集中式版本控制系统的缺陷:
    • 服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的)
    • 每个客户端保存的也都是整个完整的项目(包含历史记录,更加安全)

Git - 图2

1.2 Git 工作机制

Git - 图3

1.3 Git 和代码托管中心

代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库

  • 局域网,GitLab
  • 互联网,GitHub,Gitee

Git - 图4

1.4 Git 安装

  • Git 官网

    第2章 Git常用命令

    | 命令格式 | 作用 | | —- | —- | | git config —global user.name <用户名> | 设置用户签名 | | git config —global user.email <邮箱> | 设置用户签名 | | git init | 初始化本地库 | | git status | 查看本地库状态 | | git add <文件名> | 添加到暂存区 | | git commit -m “日志信息” <文件名> | 提交到本地库 | | git reflog | 查看版本历史记录 | | git reset —hard <版本号> | 版本穿梭 |

2.1 设置用户签名

  • 基本语法

    1. git config --global user.name <用户名>
    2. git config --global user.email <邮箱>
  • 案例实操

image.png :::tips

  • 签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看 到,以此确认本次提交是谁做的。Git 首次安装必须设置一下用户签名,否则无法提交代码
  • 这里设置用户签名和将来登录 GitHub(或其他代码托管中心)的账号没有任何关系。设置用户签名的邮箱甚至可以是虚假的 :::

    2.2 初始化本地库

  • 基本命令

    1. git init
  • 案例实操

image.png

  • 结果查看

image.png

2.3 查看本地库状态

  • 基本语法

    1. git status
  • 案例实操

    • 首次查看(工作区没有任何文件)

image.png

  • 新增文件(hello.txt)

image.png

  • 再次查看(检测到未追踪的文件)

image.png

2.4 添加暂存区

  • 基本语法

    1. git add <文件名>
  • 案例实操

    • 添加文件到暂存区

image.png :::tips CRLF:即 carriage return line feed,”\r\n”, windows系统环境下的换行方式image.png
LF:即 line feed,”\n”,Linux系统环境下的换行方式 :::

  • 查看状态(检测到暂存区有新文件)

:::tips 可以用命令 “git rm —cached <文件名>” 从暂存区删除该文件,但工作区的文件不会被删除 :::

2.5 提交本地库

  • 基本语法

    1. git commit -m "日志信息" <文件名>
  • 案例实操

    • 将暂存区的文件提交到本地库

image.png

  • 查看状态(没有文件需要提交)

image.png

2.6 修改文件(hello.txt)

  • 修改文件

image.png

  • 查看状态(检测到工作区有文件被修改)

image.png

  • 将修改的文件再次添加缓存区并查看状态

image.png

  • 将修改的文件再次提交本地库

image.png :::tips Git 按行维护版本信息,更改一行的内容需要先将原行内容删除,再插入新行内容 :::

2.7 历史版本

  • 查看历史版本

    • 基本语法

      1. git reflog # 查看版本信息
      2. git log # 查看详细版本信息
    • 案例实操

image.png

  • 版本穿梭

    • 基本语法

      1. git reset [--mixed | --soft | --hard] <版本号> # --mixed为默认
    • 案例实操

      • 查看当前版本和目标版本号 :::info
  • 由上图可知,当前 HEAD 指向 master 分支的第2个版本

  • 第1个版本号是 e11273c :::

    1. - 执行 "git reset e11273c" 后查看日志(日志也记录了版本穿梭的操作)

image.png

  1. - 查看状态(工作区出现尚未暂存的文件)

image.png