1.概念:

  • Git是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

  • Git是一个分布式版本控制工具,通常用来对软件开发过程中的源代码文件进行管理,通过Git仓库来存储和管理这些文件

  • Git仓库分为两种:

    • 本地仓库:开发人员自己电脑上的Git仓库

    • 远程仓库:远程服务器上的Git

  • 功能:1.代码回溯,2.版本切换,3.多人协作,4.远程备份

  • 版本库:前面看到的.git隐藏文件夹就是版本库(本地仓库),版本库中存储了很多配置信息,日志信息和文件版本信息等

    image-20220803083050202

  • 工作区:包含.git文件夹的目录就是工作区,也称工作目录,主要用于存放开发的代码

    image-20220803083036602

  • 暂存区:.git文件夹中有很多文件,其中有一个index文件就是暂存区,也可以叫做stage。暂存区是一个临时保存修改文件的地方

    image-20220803083021407

2.Git工作流程图:

image-20211224152340832

命令如下:

1
2
3
4
5
6
7
8
1. clone(克隆): 从远程仓库中克隆代码到本地仓库
2. checkout (检出):从本地仓库中检出一个仓库分支然后进行修订
3. add(添加): 在提交前先将代码提交到暂存区
4. commit(提交): 提交到本地仓库。本地仓库中保存修改的各个历史版本
5. fetch (抓取) : 从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。
6. pull (拉取) : 从远程库拉到本地库,自动进行合并(merge),然后放到到工作区,相当于
fetch+merge
7. push(推送) : 修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库

3.Git的安装:

1
2
3
4
5
6
链接:https://pan.baidu.com/s/1LSqwv-rRrzpGIYFabJD1zA 
提取码:abcd

安装步骤:

https://blog.csdn.net/wyg1973017714/article/details/105217864/

4.Git的一般配置:

  • 备注:

    • Git GUI:Git提供的图形界面工具

    • Git Bash:Git提供的命令行工具

    • 当安装Git后首先要做的事情是设置用户名称和email地址。这是非常重要的,因为每次Git提交都会使用

      该用户信息

  • 基本配置

    1. 打开Git Bash

    2. 设置用户信息:

      1
      2
      git config --global user.name "用户名"
      git config --global user.email "邮箱地址"
    3. 查看配置信息:

      1
      2
      git config --global user.name
      git config --global user.email
    4. 不设置报错

  • 为常用指令配置别名(可选)

    1. 打开gitBash,执行

      1
      touch ~/.bashrc
    2. 在C:\Users\user下打开文件 .bashrc,输入如下内容:

      1
      2
      3
      4
      #用于输出git提交日志 
      alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'
      #用于输出当前目录所有文件及基本信息
      alias ll='ls -al'
    3. 打开gitBash,执行

      1
      source ~/.bashrc
  • 解决GitBash乱码问题

    1. 打开GitBash执行下面命令

      1
      git config --global core.quotepath false
    2. 在git安装目录下 /ect/bash.bashrc 文件最后加入下面两行

      1
      2
      export LANG="zh_CN.UTF-8" 
      export LC_ALL="zh_CN.UTF-8"

5.获取本地仓库:

  • 要使用Git对我们的代码进行版本控制,首先需要获得本地仓库

    1. 在电脑的任意位置创建一个空目录(例如test)作为我们的本地Git仓库

    2. 进入这个目录中,点击右键打开Git bash窗口

    3. 执行命令

      1
      git init
    4. 如果创建成功后可在文件夹下看到隐藏的**.git目录**。

6.基本操作命令:

  • Git工作目录下对于文件的修改(增加、删除、更新)会存在几个状态,这些修改的状态会随着我们执行Git的命令而发生变化。

  • Git工作区中的文件存在两种状态:

    • untracked(未跟踪):未被纳入版本控制
    • tracked(已跟踪):被纳入版本控制
  • 已跟踪的文件存在三种状态:1.Unmodified未修改状态,2.Modified已修改状态,3.Staged已暂存状态

  • image-20211224162643741

  • 使用命令来控制这些状态之间的转换,其他操作

    命令 说明
    git status 查看的文件修改的状态(暂存区、工作区)
    git add 工作区 –> 暂存区
    git reset 将暂存区的文件取消暂存或者是切换到指定版本
    git commit 暂存区 –> 本地仓库
    git log 查看日志
    git reflog 查看已经删除的记录
    1
    2
    3
    4
    //1.添加单个文件到暂存区
    git add 单个文件名+后缀
    //2.将所有修改文件添加到暂存区
    git add .
    1
    git commit -m "注释内容"    //提交暂存区内容到本地仓库的当前分支
    1
    git commit -m "注释内容" hello.txt  //提交指定文件
    1
    git log   //查看提交记录
    1
    git reset hello.txt   //取消暂存
    1
    git reset --hard commitID    //commitID 可以使用 git-log 或 git log 指令查看
  • git log 参数

    参数 说明
    all 显示所有分支
    pretty=oneline 将提交信息显示为一行
    abbrev-commit 使得输出的commitId更简短
    graph 以图的形式显示

7.远程仓库操作命令:

命令 说明
git remote 查看远程仓库
git remote add <远端名称> <仓库路径> 添加远程仓库,远端名称:默认是origin
git clone <仓库路径> [本地目录] 从远程仓库克隆
git fetch [remote name] [branch name] 从远程仓库抓取,将仓库里的更新都抓取到本地,不会进行合并
git pull [remote name] [branch name] 从远程仓库拉取,将远端仓库的修改拉到本地并自动进行合并
git push <远端名称> <本地分支名> 推送到远程仓库
git branch -vv 查看本地分支和远程分支的对应关系
1
git remote    //查看远端名称
1
git remote  -v   //查看远端名称,url,等
1
git remote add origin git@gitee.com:blue-fantasy/git_test.git   //建立连接
1
git clone git@gitee.com:blue-fantasy/git_test.git [本地目录]
1
2
//克隆指定分支的代码到当前目录
git clone -b product git@gitee.com:blue-fantasy/git_test.git
1
git push origin master    //origin:本地分支,master远端分支
1
git push -f origin master   //-f 表示强制覆盖
1
git push --set-upstream origin master:master   //--set-upstream:推送到远端的同时并且建立起和远端分支的关联关系
1
git push   //当前分支已经和远端分支关联

8.分支命令:

  • 几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离

    开来进行重大的Bug修改、开发新的功能,以免影响开发主线。

  • 分支命令:

    命令 说明
    git branch 查看本地分支
    git branch [ name ] 创建本地分支
    git branch -d [ name ] 删除分支时,需要做各种检查(不能删除当前分支,只能删除其他分支)
    git branch -D [ name ] 不做任何检查,强制删除 (不能删除当前分支,只能删除其他分支)
    git checkout [ name ] 切换分支
    git checkout -b [ name ] 创建并切换分支
    git push [ shortName ] [ name ] 推送至远程仓库分支
    git merge [ name ] 合并分支,将其他分支合并到当前分支
    1
      

9.解决冲突:

  • 当两个分支上对文件的修改可能会存在冲突,例如同时修改了同一个文件的同一行,这时就需要手动解

    决冲突,解决冲突步骤如下:

    1. 处理文件中冲突的地方
    2. 将解决完冲突的文件加入暂存区(add)
    3. 提交到仓库(commit)
  • 冲突部分的内容处理如下所示:

    image-20211225093914373

10.开发中分支使用原则与流程:

  • 几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离

    开来进行重大的Bug修改、开发新的功能,以免影响开发主线

  • 在开发中,一般有如下分支使用原则与流程:

    • master (生产) 分支

      线上分支,主分支,中小规模项目作为线上运行的应用对应的分支;

    • develop(开发)分支

      是从master创建的分支,一般作为开发部门的主要开发分支,如果没有其他并行开发不同期上线

      要求,都可以在此版本进行开发,阶段开发完成后,需要是合并到master分支,准备上线。

    • feature/xxxx分支

      从develop创建的分支,一般是同期并行开发,但不同期上线时创建的分支,分支上的研发任务完

      成后合并到develop分支

    • hotfifix/xxxx分支

      从master派生的分支,一般作为线上bug修复使用,修复完成后需要合并到master、test、

      develop分支

    • 还有一些其他分支,在此不再详述,例如test分支(用于代码测试)、pre分支(预上线分支)等

      等。

11.标签操作命令:

  • Git中的标签,指的是某个分支某个特定时间点的状态(快照),通过标签,可以很方便的切换到标记时的状态

  • 操作命令:

    命令 说明
    git tag 列出已有的标签
    git tag [ name ] 创建标签
    git push [ shortName ] [ name ] 将标签推送至远程仓库
    git checkout -b [ branch ] [ name ] 检出标签

12.常用的托管服务

  • 前面我们已经知道了Git中存在两种类型的仓库,即本地仓库和远程仓库。那么我们如何搭建Git远程仓库

    呢?我们可以借助互联网上提供的一些代码托管服务来实现,其中比较常用的有GitHub、码云、GitLab等。

  • gitHub( 地址:https://github.com/ )是一个面向开源及私有软件项目的托管平台,因为只支持

    Git 作为唯一的版本库格式进行托管,故名gitHub

  • 码云(地址: https://gitee.com/ )是国内的一个代码托管平台,由于服务器在国内,所以相比于

    GitHub,码云速度会更快

  • GitLab (地址: https://about.gitlab.com/ )是一个用于仓库管理系统的开源项目,使用Git作

    为代码管理工具,并在此基础上搭建起来的web服务,一般用于在企业、学校等内部网络搭建git私服。

13.配置SSH公钥:

  • 生成SSH公钥-步骤:

    • ssh-keygen -t rsa
      
      1
      2
      3
      4
      5
      6
      7
      8
      9

      - 不断回车,如果公钥已经存在,则自动覆盖

      - Gitee设置账户共公钥

      - 获取公钥

      ```java
      cat ~/.ssh/id_rsa.pub
    • image-20211225164351696

    • 验证是否配置成功

      1
      ssh -T git@gitee.com

14.在Idea中操作Git:

  • 场景:本地已经有一个项目,但是并不是git项目,我们需要将这个放到码云的仓库里,和其他开发人员

    继续一起协作开发

  • 初始化本地仓库,将此项目设置为本地仓库

    image-20211225190826507

  • 设置远程仓库1.Name:远程仓库的名称,2.URL:远程仓库的地址

    image-20211225194141712

  • 关闭代码检查:

    image-20220803124844798

  • 推送到远程仓库,1.master本地仓库分支,2.dev远程仓库名称,3.development远程仓库分支

    image-20220803125125742

  • 克隆远程仓库到本地,上方Git——>clone

    image-20211225195630631

  • 查看或是设置分支:

    image-20220803130104915

  • 推送当前分支到远程仓库:

    image-20220803130810306

  • 切换成其他分支:

    image-20220803130931427

  • 合并选中的其他分支到当前分支:

    image-20220803131146944