Git简介及结合Idea使用

⼀、Git简介

1.1 项⽬的版本管理

在项⽬开发过程中,项⽬没开发到⼀个节点就会对当前项⽬进⾏备份,这个备份就是项⽬的⼀个版本;
当我们继续开发⼀个阶段后,再次进⾏备份,就⽣成新的版本——多个版本的集合就是项⽬的版本库

在项⽬版本管理中,我们可以使⽤⼿动进⾏管理,但是存在⼀些问题:

  • 需要⼿动维护版本的更新⽇志,记录每个版本的变化
  • 需要⼿动查找历史版本,当历史版本⽐较多的时候,查找⼯作很繁琐
  • 当我们需要回退到某个版本时,只能够⼿动的通过IDE⼯具⼿动打开

1.2 团队协同开发

在这里插入图片描述

1.3 版本管理⼯具—Git

Git是⼀个开源的分布式版本控制系统,⽤于敏捷⾼效的处理任何⼤⼩项⽬的版本管理。

核⼼功能:

  • 项⽬的版本管理
  • 团队协同开发

⼆、Git下载及安装

2.1 下载Git

https://git-scm.com/
在这里插入图片描述

2.2 安装Git

除了选择安装位置以外,其他都傻⽠式安装

2.3 检查

  • win + r
  • 输⼊cmd
  • 输⼊ git --version

三、Git架构

在这里插入图片描述

四、Git基本使用

4.1 创建版本库

  • 在⼯作空间的⽬录中,右键“Git Bash Here”打开git终端
  • 在Git终端中输⼊ git init 指令,创建版本库(就是⼀个.git⽬录)
    在这里插入图片描述

4.2 查看版本库状态

git status 

4.3 将工作空间的修改添加到暂存区

git add a.txt ## 只将⼯作空间中的某个⽂件add到暂存区
git add . ## 将⼯作空间中所有⽂件都add暂存区

4.4 将暂存区内容提交到版本库(仓库)

git commit -m '版本说明' 

4.5 查看版本库中的历史版本

git log --oneline ## 每个版本信息只显示⼀⾏
get log ## 显示每个版本的详细信息

4.6 设置⽤户信息

git config --global user.name 'ergou'
git config --global user.email 'haha@hehe.com'

因为我们将暂存区的内容提交到版本时,会记录当前版本的提交的⽤户信息,因此在版
本提交之前需要先绑定⽤户信息

4.7 同步历史版本到⼯作空间

git checkout 版本号

五、远程仓库

5.1 远程仓库

远程仓库,远程版本库;实现版本库的远程存储,以实现团队的协同开发

在这里插入图片描述

5.2 如何获得远程仓库

  1. 使⽤GitLab搭建私服
  2. 远程仓库提供商
    GitHub https://gitbub.com
    Gitee(码云) https://gitee.com
    Coding

5.3 创建远程仓库(码云)

  1. 注册账号
    366274379 / admin123
    在这里插入图片描述
  2. 创建远程仓库:https://gitee.com/qfytao/j2010.git
  3. 远程仓库管理(添加开发⼈员)
    在这里插入图片描述

六、远程仓库操作(Git Bash)

官网 https://gitee.com/help/articles/4122

6.1 push本地仓库到远程仓库

6.1.1 准备工作

  1. 创建本地工作空间
    在这里插入图片描述
  2. 初始化本地仓库
 git init
  1. 将⼯作空间搭建的项⽬结构add到暂存区
git add . 
  1. 将暂存区文件提交到版本库,生成第⼀个版本
git commit -m '创建项⽬' 
  1. 为当前项目创建⼀个远程仓库
    https://gitee.com/qfytao/fmwy.git

6.1.2 本地仓库关联远程仓库

建⽴D:\fmwy中的本地仓库 和 远程仓库https://gitee.com/qfytao/fmwy.git的关联

git remote add origin https://gitee.com/qfytao/fmwy.git

6.1.3 查看远程仓库状态

git remote -v

6.1.4 将本地仓库push到远程仓库

push到远程仓库需要gitee的帐号和密码

git push origin master

在这里插入图片描述

6.2 其他开发者pull远程仓库到本地

其他开发者:www.1114325587@qq.com

6.2.1 先创建本地仓库

  • 在E盘创建ws⽬录(空⽬录),进⼊ws⽬录,打开Git客户端
  • 创建本地版本库
git init

6.2.2 拉取远程仓库到本地

  • 拉取远程仓库
//git pull 远程仓库地址 master
git pull https://gitee.com/qfytao/fmwy2.git master

6.3 解决协同开发冲突问题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
HelloWorld.java在这里插入图片描述

七、分支管理

7.1 什么是分支

分⽀就是版本库中记录版本位置(⽀线),分⽀之间项⽬会影响,使⽤分⽀可以对项⽬起到保护作⽤
分⽀就是⼀条时间线,每次提交就在这条时间线上形成⼀个版本

7.2 分支特性

  • 创建⼀个新的版本库,默认创建⼀个主分⽀—master分⽀
  • 每个分⽀可以进⾏单独管理(常规分⽀、保护分⽀、只读分⽀)
  • 分⽀是可以合并的

7.3 分支操作

7.3.1 创建分支

git branch branch_name 

7.3.2 查看分支

git branch

7.3.3 切换分支

git branch branch_name # 切换到指定分⽀上的最新版本

7.3.4 检出分支

git checkout 历史版本 -b branch_name # 签出指定的历史版本创建新分⽀

7.3.5 分支合并

  • 三方合并
  • 快速合并
# 在master分⽀执⾏ git merge dev 表示将dev分⽀合并merge
git merge breanch_name

⼋、Idea整合Git使用

作为Java开发⼯程,我们代码的编写⼯作都是在IDE⼯具(idea)中完成,因此我们需要
了解和掌握直接使⽤IDE⼯具完成Git的操作

8.1 IDEA关联Git

在这里插入图片描述

8.2 IDEA中Git版本管理

准备⼯作:打开IDEA新建⼀个web⼯程

8.2.1 创建本地版本库

在这里插入图片描述

8.2.2 设置忽略⽂件

在工作空间中有些⽂件是不需要记录到版本库中的(例如.idea、target、.iml⽂件),
可以通过设置忽略提交来实现

  • 在⼯作空间的根⽬录(项⽬的根⽬录)中创建⼀个名为 .gitignore ⽂件
  • 在 .gitignore ⽂件配置忽略过滤条件

8.2.3 将⼯作空间add到暂存区

  • 选择项⽬/⽂件—右键—Git—Add(添加到暂存区的⽂件–绿⾊)
  • 如果⼀个⽂件创建好之后还没有添加到暂存区–棕红⾊
  • 添加到暂存区的操作可以设置默认添加
    在这里插入图片描述

8.2.4 将暂存区提交到版本库

  • 选择项⽬/⽂件—右键—Git–Commit(记录到版本库的⽂件–⿊⾊)
  • 如果对记录到 版本库的⽂件进⾏了修改,也就是说⼯作空间和版本库不⼀致–蓝⾊

8.3 IDEA中Git分支管理

8.3.1 创建分支

  • 点击IDEA右下⻆ Git
  • 在弹窗中点击 New Branch
  • 输⼊新分⽀的名称

8.3.2 切换分支

  • 点击IDEA右下⻆ Git
  • 点击⾮当前分⽀右边的箭头
  • 在选项卡点击 checkout

8.3.3 删除分支

在这里插入图片描述

8.3.4 合并分⽀

例如:将dev合并到master

  • 切换到master分⽀
  • 点击dev分⽀右⾯的箭头,在展开的菜单中选择 Merge into current

8.4 IDEA中使⽤Git进⾏团队协同开发

8.4.1 项⽬管理者

  1. 完成项⽬搭建
  • 新建Maven项目-修改pom.xml里面打包方式为 war在这里插入图片描述
  1. 为当前项⽬创建本地版本库
  2. 将搭建好的项⽬提交到本地版本库
  • add到暂存区
  • commit到版本库
  1. 创建远程版本库(远程仓库)
  1. 将本地仓库push到远程仓库(master分⽀——master分⽀)
    在这里插入图片描述
    在这里插入图片描述
  2. 在本地创建dev分⽀

在远程仓库 checkout as 新建本地 dev 分⽀(master需要进⾏保护)

在这里插入图片描述
7. 将本地dev分⽀push到远程仓库,新建远程仓库的dev分⽀
8.

  1. 设置远程仓库中master分⽀为保护分⽀
    在这里插入图片描述

8.4.2 项目开发者

  1. 从管理员提供的远程仓库pull项⽬到本地
  1. 打开项⽬(此时本地⼯作空间的项⽬和远程仓库是同步的)
  2. 开发步骤:
  • 选择要修改的⽂件–pull
  • 进⾏修改操作
  • 测试本地修改
  • add到暂存区
  • commit到本地版本库
  • push到远程仓库(dev)

8.5 解决团队协同开发的冲突问题

冲突:在pull之后,push之前被其他开发者这push成功

  • 选择产⽣冲突的⽂件—pull
  • 弹出弹窗提示:accpet yours | accept theirs | Merge
    accpet yours 保留⾃⼰的版本(提交时会覆盖其他开发者代码)
    accpet theirs 保留远程仓库上的版本(会导致⾃⼰修改的代码丢失)
    Merge ⼿动合并(和其他开发者沟通合并⽅案)