浅显易懂的 git 入门

浅显易懂的 git 入门

[TOC]

git 介绍

git的是一个流行和最常用的代码版本管理工具,它可以很方便的帮我们管理代码(记录代码版本信息,回滚代码版本等)和方便项团队协作。

使用方式

主要分为两种使用方式

  1. 命令行方式 底层原理
  2. 可视化工具的方式 方便、常用

命令行

该方式主要是通过 在 shell 窗口中,输入git相关的命令来实现功能

image-20230220100957647

可视化工具

  1. vscode 自带有 我们学这个

    image-20230220101831389

  2. tortoisegit 小乌龟

    image-20230220101947334

  3. source tree 收费

    image-20230220102107192

下载和安装

下载和安装git

下载好后,直接双击安装即可

  1. windows

    image-20230220103908145


    在你电脑的空白位置,鼠标右键,如果出现以下提示,表示安装成功

    image-20230221145056461

  2. mac

    image-20230220103953086


    mac直接打开终端 ,即可使用

git bash 基本使用

  1. 按下回车表示执行
  2. 复制和粘贴不再是 ctrl + c 、 ctrl + v ,可以通过鼠标右键来操作

    image-20230220112311623

  3. 输入clear 表示清空控制台
  4. 当窗口内容太多时
    1. 按下 回车 表示继续查看隐藏内容
    2. 按下 q 表示退出

工作常用流程

查看版本号

git --version 
复制代码

初始化个人信息

一台电脑,只需要初始化信息一次,告诉git,我们的用户名和邮箱

  1. 查看用户名
    git config --global user.name 
    复制代码
  2. 查看邮箱
    git config --global user.email 
    复制代码
  3. 设置用户名
    git config --global user.name "xxx" 
    复制代码
  4. 设置邮箱
    git config --global user.email 
    复制代码

初始化git仓库

git主要是通过仓库来管理我们的项目代码

  1. 在你的项目文件夹内,打开 git 工具,输入命令来初始化git仓库

    image-20230220104926372

  2. 在你的项目内,会多了一个 隐藏文件夹 .git

    image-20230220105023078

代码编辑

模拟真实工作情况,可以在目录内 新建一些文件,简单编辑

image-20230220105253411

查看仓库状态

可以随时通过 查看仓库状态,来获知下一步的操作步骤

image-20230220105625036

添加暂存区

当你仓库内的文件发生修改时(新增、编辑、删除),都需要添加到暂存区

git add . 
复制代码

此时,再次查看仓库状态

image-20230220110039156

提交本地仓库

文件存在暂存区还是不安全的,因为文件需要提交到本地仓库,才算是一个完整的操作,后期才可以实现版本回滚

提交到本地仓库有一个关键信息,需要备注这个版本你做了什么事,如 增加了倒计时功能增加了轮播图效果。一定要有语义,否则不符合公司规范,是个很低级的错误。

git commit -m "首页增加了轮播图"
复制代码

查看日志

只有做了提交操作,git仓库中才会存在日志信息。

git log 
复制代码

image-20230220111119779


如果做了版本回退,可以使用

git reflog 
复制代码

相关概念

git中,存在三个区域和对应的三种文件状态

三个区域

  1. 工作目录 git仓库管理的目录就叫做工作目录
  2. 暂存区 执行了 git add .后,被编辑的文件就被添加到暂存区中
  3. 本地仓库 执行了 git commit 后,暂存区中的文件就被添加到本地仓库了

三个状态

在git仓库中,文件只有三种状态

  1. 已修改(modified) 表示文件做了编辑,但是没有添加到暂存区
  2. 已暂存(staged) 表示文件添加到了暂存区,但是没有提交到本地仓库
  3. 已提交(committed) 表示文件已经提交到本地仓库

img

远程仓库

介绍

远程仓库其实就是本地仓库的一个备份,一般分类两类

  1. 企业中,公司会有自己专门的远程仓库,公司会给我们开发者对应的远程仓库链接的
  2. 互联网上,我们自己也可以使用免费的远程仓库,方便自己使用或者方便和网友沟通交流
    1. 码云 国内
    2. github 全球

准备工作

实际工作中都会有项目组长提前完成

  1. 注册账号
  2. 新建远程仓库

image-20230220155236339


创建成功

image-20230220155318994

克隆远程仓库

实际工作中,项目组长会直接发给我们一个 远程仓库地址

我们现在自己 复制一下 刚才新建好的远程仓库地址

image-20230220155437327

打开git 窗口,输入命令,进行克隆 (clone)

git clone https://gitee.com/ukSir/web007.git
复制代码

如果是私密仓库,则会弹出提示 要求填写你远程仓库(码云)的账号和密码。

推送到远程仓库

本地仓库仓库的代码 推送到远程仓库

当我们克隆下来的仓库中的代码进行过编辑后

需要注意的是: 不要出现代码写了一半,没有提交代码就推送更新

git push 
复制代码

此时,刷新码云上的网页,即可看到你所上传的代码。

image-20230220162415733

拉取更新

团队协作过程中,我们想要获取到远程仓库上别人推送上去的新代码,就可以使用 拉取更新

需要注意的是: 不要出现代码写了一半,没有提交代码就拉取更新

git pull 
复制代码

远程仓库补充

查看添加的远程仓库地址

可以看到本地仓库中已经建立了的远程仓库的链接信息

git remote -v 
复制代码

image-20230220164341123

添加远程仓库地址

一个本地仓库,可以对应多个远程仓库地址,但是一般都是 1 对 1

git remote add 变量名  远程仓库地址
复制代码
  1. 变量名 可以自己取
  2. 远程仓库地址 可以自己新建

推送到远程仓库

如果延续上一个步骤,我们直接推送代码,会出现问题

image-20230220165248631

此时要使用上个知识点,添加远程仓库地址

git remote add origin [email protected]:ukSir/web008.git
复制代码

然后指定仓库名称并且指定分支开始推送

git push --set-upstream origin master
复制代码
  1. --set-upstream 表示将本地分支 master 推送到 远程仓库 master分支上

    只要成功推送过一次后,后期又可以直接使用 git push 进行推送了

  2. master 本地仓库中的默认分支

撤销

分为两种

  1. 将未添加到暂存区的代码全部撤销
  2. 把添加到暂存区中的代码进行取消

把未添加到暂存区的代码全部撤销

git checkout . 
复制代码

把暂存区中的代码撤销到工作区

git reset . 
复制代码

把暂存区中的代码全部撤销

git reset --hard 
复制代码

回滚

可以实现代码时光穿梭,将你的代码还原到某一个版本

需要注意的是: 不要出现代码写了一半,就进行代码的回滚

  1. 先查看日志,获取版本ID
    git log 
    复制代码

    image-20230220174718408

  2. 执行回滚
    git reset --hard 版本ID
    复制代码

分支

git在运作的时候都是基于分支的,分支可以理解为就是项目代码的一个备份

作用

我们可以建立多个分支,分支的名称可以自定义。如

  1. 主分支 表示线上稳定运行的代码
  2. dev分支 表示开发状态下,每一个成员都是在 dev分支下工作,这样哪怕出现事故,也不会影响到主分支
  3. 测试分支 表示代码开发完毕,测试人员和开发人员在测试分支下进行修复bug。
  4. 自己名称命名的分支 表示团队开发中,每一个人都可以使用 自己名称来开设一个分支,然后在此分支上进行开发。

功能

在git中,常见的分支功能主要有

  1. 查看分支
    git branch 
    复制代码
  2. 创建分支
    git branch 分支名称
    复制代码
  3. 切换分支
    git checkout 分支名称
    复制代码
  4. 创建并切换分支
    git checkout -b 分支名称
    复制代码
  5. 合并分支

    把 dev分支合并到 master分支上

    需要注意的是: 不要出现代码写了一半,就进行分支的合并

    1. 先切换回主分支
      git checkout master
      复制代码
    2. 然后再合并分支
      git merge dev 
      复制代码
  6. 删除分支
    git branch -d 分支名称
    复制代码
  7. 克隆指定远程仓库的某个分支
    git clone -b 远程仓库上的分支名称 远程仓库地址
    复制代码
  8. 克隆远程分支到本地某个分支上
    git clone -b 远程仓库上的分支名称 远程仓库地址
    复制代码
  9. 将本地某个分支推送到远程仓库对应的分支上
    1. 在本地仓库中先切换分支
    2. 开始推送
      git push --set-upstream 本地仓库中记录的远程仓库的别名 分支名称
      复制代码

团队协作

行业通用解决方案

GitFlow、GitHubFlow以及GitLabFlow

Git工作流中常见的三种分支策略:GitFlow、GitHubFlow以及GitLabFlow

常规工作流程

2023年2月21日 08_09_04

冲突

冲突是一种现象:在git中进行文件的更新中或者合并中,如果发现同一时刻,同一位置进行了修改,那么就会出现冲突

一般来说,出现冲突的场景主要有以下两种:

  1. 分支合并时
  2. 拉取更新时

分支合并-冲突

如果两个分支,同一时刻修改了同一文件的同一位置,那么在做分支合并时,就会出现冲突。

2023-2-21 14_29_34

解决冲突

手动修改要调整的代码,然后执行 git add 、 git commit 、 即可

拉取更新-冲突

2023-2-21 14_41_23

解决冲突

手动修改要调整的代码,然后执行 git add 、 git commit 、 即可

commit 风格

企业开发中,我们提交commit的日志 格式也是有要求的,目前一般是参考 angular推出的规范。

git commit -m [type](scope):备注信息
复制代码

type 操作类型

用来描述本次commit主要的用途

类型 说明
feature 简写: feat 开发新功能
fix 修复 bug
docs 仅修改了文档,如readme.md
style 仅仅是对格式进行修改,如逗号、缩进、空格等。不改变代码逻辑。
refactor 代码重构,没有新增功能或修复bug
perf 优化相关,如提升性能、用户体验等。
test 测试用例,包括单元测试、集成测试。
chore 改变构建流程、或者增加依赖库、工具等。
revert 版本回滚

示例

git commit -m feat:实现登录
复制代码

scope 受影响的文件-可选

用于说明 本次commit 影响的范围,比如: views, component, utils, test…

git commit -m feat(index.html):实现登录
复制代码

忽略清单

在git仓库中,可能存在一些文件不想要被git所管理,不需要进行团队共享。此时可以在忽略清单中添加忽略。

忽略清单的文件夹名是固定的,必须是 .gitignore, 然后在里面添加要被忽略掉文件即可

需要注意的是,一般情况下,在初始化git仓库的时候,忽略清单也应该同时创建

.gitignore

## 忽略 1.txt 文本
1.txt

## 忽略后缀名为 mp4 的文件
*.mp4

## 忽略文件夹

vscode/ 
复制代码

vscode 可视化 操作git

初始化git仓库

如果你的仓库是克隆远程仓库的,则不需要进行这一步操作

  1. 使用vscode打开一个没有git管理的文件夹
  2. 点击按钮即可完成初始化 git init

    image-20230221152940949

添加到暂存区&提交本地仓库

image-20230221153648704

添加远程仓库地址

如果你的仓库是克隆远程仓库的,则不需要进行这一步操作

image-20230221153801793


image-20230221153851518


image-20230221153916734


image-20230221154135712

推送到远程仓库

image-20230221154243065


后期再推送

image-20230221154407274

拉取更新

image-20230221154441500

git 相关插件

  1. GitLens — Git supercharg 方便查看文件编辑历史 和 操作git其他功能

    image-20230221154526705

  2. Git History,方便查看文件历史信息

    image-20230221154752840

SSH 补充

一些电脑系统在使用码云的时候,没有自动记录密码功能,就可能会出现频繁要求添加账号和密码的问题。 这个时候可以通过设置 ssh 来解决。

www.yuque.com/budongxians…