?、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
git 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 如何获得远程仓库
- 使?GitLab搭建私服
- 远程仓库提供商
GitHub https://gitbub.com Gitee(码云) https://gitee.com Coding
5.3 创建远程仓库(码云)
- 注册账号
366274379 / admin123  - 创建远程仓库:https://gitee.com/qfytao/j2010.git
- 远程仓库管理(添加开发?员)

六、远程仓库操作
6.1 push本地仓库到远程仓库
6.1.1 准备?作
- 创建本地?作空间
 - 初始化本地仓库
git init
- 将?作空间搭建的项?结构add到暂存区
git add .
- 将暂存区?件提交到版本库,?成第?个版本
git commit -m '创建项?'
- 为当前项?创建?个远程仓库
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 分支合并
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 项?管理者
- 完成项?搭建
- 新建Maven项目-修改pom.xml里面打包方式为 war

- 为当前项?创建本地版本库
- 将搭建好的项?提交到本地版本库
- 创建远程版本库(远程仓库)
- 将本地仓库push到远程仓库(master分?——master分?)
  - 在本地创建dev分?
在远程仓库 checkout as 新建本地 dev 分?(master需要进?保护)
 7. 将本地dev分?push到远程仓库,新建远程仓库的dev分? 
- 设置远程仓库中master分?为保护分?

8.4.2 项目开发者
- 从管理员提供的远程仓库pull项?到本地
- 打开项?(此时本地?作空间的项?和远程仓库是同步的)
- 开发步骤:
- 选择要修改的?件–pull
- 进?修改操作
- 测试本地修改
- add到暂存区
- commit到本地版本库
- push到远程仓库(dev)
8.5 解决团队协同开发的冲突问题
冲突:在pull之后,push之前被其他开发者这push成功
- 选择产?冲突的?件—pull
- 弹出弹窗提示:accpet yours | accept theirs | Merge
accpet yours 保留??的版本(提交时会覆盖其他开发者代码) accpet theirs 保留远程仓库上的版本(会导致??修改的代码丢失) Merge ?动合并(和其他开发者沟通合并?案)
|