1.目标

  • Git的基本概念
  • 概述Git工作流程
  • 使用Git常用命令
  • Git代码托管服务
  • idea操作git

2.概述

2.1开发中的实际场景

一:备份

二:代码还原

三:协同开发

四:追溯问题代码的编写人和编写时间

2.2版本控制器方式

a:集中式版本控制工具 (SVN 和 CVS)

​ 版本库是放在中央服务器的,每个人工作时从中央服务器下载代码,都是要联网,才能工作的。个人修改后再提交的中央服务器

b:分布式版本控制工具(Git)

​ 没有“中央服务器”,每个人电脑上都是一个完整的版本库,工作则无需联网,本版库就在自己电脑上

2.3Git

  • 简单的设计
  • 速度快
  • 队非线性开发模式的强力支持(允许多个并发开发的分支)
  • 完全分布式
  • 有能力高校管理类似inux内核一样的超大规模项目(速度和数据量)

2.4SVN(过时的)

2.5Git工作流程图

命令如下:

  1. clone(克隆)∶从远程仓库中克隆代码到本地仓库

  2. checkout(检出) :从本地仓库中检出一个仓库分支然后进行修订

  3. add(添加):在提交前先将代码提交到暂存区

    4.commit(提交)︰提交到本地仓库。本地仓库中保存修改的各个历史版本

    5.fetch (抓取)︰从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。

  4. pull (拉取)∶从远程库拉到本地库,自动进行合并(merge),然后放到到工作区,相当于fetch+merge

  5. push(推送)︰修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库

3.常用命令

3.1获取本地仓库

  1. 执行命令git init
  2. 如果创建成功后可在文件夹下看到隐藏的.git里录。

3.2基础操作指令

Git工作目录下对于文件的修改(删除,更新,增加)这些修改状况会随着执行Git的命令变化而变化

  • git add (工作区 –> 暂存区)
  • git commit (暂存区 –> 本地仓库)

3.2.1查看修改的状态(status)

  • 作用:查看修改的状态
  • 命令:git status

3.2.2添加工作区到暂存区(add)

  • 作用:添加工作区一个或多个文件的修改到暂存区

  • 命令:git add 文件名

    ​ 将所有修改加入暂存区 git add .

3.2.3提交暂存区到本地仓库(commit)

  • 作用:提交暂存区内容到 本地仓库的当前分支
  • 命令:git commit -m “ 注释内容”

每次进行的vi编辑文件之后还要进行:add ;commit -m “ ” ;操作

3.3.4查看提交日志(log)

  • 作用:查看提交形式

  • 命令:git log [options]

    options

      • –all 显示所有分支
      • -pretty = online 将提交信息显示为一行
      • -abbrev-commit使得输出的commit更加简短
      • -graph以图的形式显示
  • 配置别名:用一些指定的命令代替长命令

3.3.5版本回退

  • 作用:版本切换
  • 命令:git reset – hard commitID
    • ​ commitID 可以使用git - log 或git -log 指令查看
  • 查看已删除的记录
    • git reflog
    • 看得到已删除的记录

3.3.6添加文件忽略某些文件

创建一个名为:.gitignore 的文件 把不需要的文件名的扩展名 填写进去

3.4分支

从主线上分离开来进行修改,开发,不影响主线开发。

  • 查看本地分支 :git branch

  • 创建本地分支:git branch 分支名

  • 切换分支:git checkout 分支名

  • 切换到不存在的分支:git checkout -b 分支名

  • 合并分支(merge): git merge 分支名

    • ​ 合并的快进模式:git checkout mester
  • 删除分支 :(不能删除当前分支,只能删除其他的分支)

    git branch -d b1 删除分支时,需要做各种检查

    git branch -D b1 不做任何检查,强制删除

解决冲突

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

  1. 处理文件中冲突的地方
  2. 将解决完冲突的文件加入暂存区(add)
  3. 提交到仓库(commit)

如下图:

开发中分支使用原则鱼流程

几乎所有的版本控制系统都以某种形式支持分支。使用分支意味着你可以把你的工作从开发主线上分离开来进行重大的Bug修改、开发新的功能,以免影响开发主线。

有如下原则和流程:

  • master(生产)分支

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

  • develop(开发)分支

    是从master创建的分支,一般作为开发部门的主要开发分支,如果没有其他并行开发不同期上线要求,都可以在此版本进行开发,阶段开发完成后,需要合并到master分支,准备上线。

  • feature/xxxx分支

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

  • hotfix/xxxx分支,

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

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

4.Git远程仓库

4.1常用的托管服务(远程仓库)

GitHub , 码云 ,GitLab

4.2注册码云

4.3创建远程仓库

命令:git remote add

4.4配置SSH公钥

4.5查看远程仓库

4.5.1克隆远程仓库

命令:git clone SSH的地址 指定clone文件名

4.5.2从远程仓库抓取和拉取

  • 抓取 命令:git fetch [remote name] [branch name]

    ​ 抓取指令就是将仓库里的更新都抓取到本地,不会进行合并

    ​ 如果不指定远端名称和分支名,则抓取所有分支。

  • 拉取 命令:git pull [remote name] [branch name]

    ​ 拉取指令就是将远端仓库的修改拉到本地并自动进行合并,等同于fetch+merge

    ​ 如果不指定远端名称和分支名,则抓取所有并更新当前分支。