项目一系列-第2章 Git版本控制

第2章 Git版本控制

2.1 Git概述

Git是什么?Git是一个分布式版本控制工具,于管理开发过程中的文件。

Git有哪些作用

  • 远程备份:Git可以将本地代码备份到远程服务器,防止数据丢失。
  • 多人协作:Git运行多个开发者在同一个代码库协同工作。开发者可以共享代码、合并变更、解决冲突等。
  • 代码回溯:Git可以返回之前的代码版本。用于修复错误和恢复代码。
  • 版本切换:Git可以切换分支或者不同的提交切换代码版本。

2.2 Git环境准备

1、安装Git

2、进行全局配置

3、配置SSH公钥

4、建立本地仓库及远程仓库

安装Git怎么做

下载地址:https://git-scm.com/download/win

全局配置要几步

1、设置用户信息(必须配置,用于远程连接)

shell 复制代码
git config --global user.name "ychenchen"
git config --global user.email "ycc@itcast.cn"

2、查看配置信息

shell 复制代码
git config --list

3、初始化本地仓库及远程仓库

shell 复制代码
git init

配置SSH公钥要几步?

1、生成SSH公钥

bash 复制代码
ssh-keygen -t rsa
  • 不断回车

  • 如果公钥已经存在,则自动覆盖

2、获取公钥

bash 复制代码
cat ~/.ssh/id_rsa.pub

3、到Gitee中设置SSH公钥

4、验证是否配置成功

bash 复制代码
ssh -T git@gitee.com

2.3 Git常用命令

常见命令主要分为三大类:

  • 本地仓库命令
  • 远程仓库命令
  • 分支命令

本地仓库命令

bash 复制代码
# 初始化本地仓库
git init
# 将所有文件提交到暂存区
git add .
# 将暂存区文件提交到本地仓库
git commit -m"第一次提交所有文件到本地仓库"
# 将暂存区文件取消暂存
git reset
# 查看详细的提交日志
git log
# 查看简洁的提交日志
git reflog
# 切换到指定版本
git reset --hard [version]

远程仓库命令

bash 复制代码
# 添加关联的远程仓库
git remote add <shortname> <url>
# 查看关联的远程仓库
git remote [-v]
# 提交本地仓库代码到远程仓库
git push origin master
# --set-upstream 建立起和远端分支的关联,后续可省分支名和远端名
git push [-f] [--set-upstream] [远端名称 [本地分支名][:远端分支名] ]
# 克隆远程仓库到本地
git clone <url>
# 拉取最新的远程仓库
git pull <shortname> <branch>
# fatal: refusing to merge unrelated histories
git pull --allow-unrelated-histories

分支命令

bash 复制代码
# 列出所有本地分支
git branch
# 列出所有远程分支
git branch -r
# 列出所有本地分支和远程分支
git branch -a
# 创建分支
git branch <branchName>
# 切换分支
git checkout <branchName>
git checkout -b <branchName> # 创建并切换分支
# 合并分支:在当前分支合并其他分支
git merge <branchName>
# 删除分支
git branch -d b1 # 删除分支时,需要做各种检查
git branch -D b1 # 不做任何检查,强制删除

2.3.1 分支创建规则

以下是一些常见的Git分支创建规则:

1、主分支(master)

主分支用于项目的发布和部署,只有稳定的代码才能被合并到master分支。

master分支上,每一个tag标记一个线上版本。

2、开发分支(develop/dev)

开发分支包含项目的最新代码,但功能都在从该分支独立出来的特性分支中开发。

通常命名为developdev

3、特性分支(feature)

特性分支用于开发特定的功能,每个新功能都应在从develop分支创建的feature/xxx形式的特性分支上进行开发和测试。

4、预发布分支(release)

预发布分支用于准备发布新版本,进行最后的测试和调整,从 develop 分支创建以确保代码稳定,命名格式为release/xxx,其中xxx是具体的版本号。

测试过程中若存在bug需要修复,则直接由开发者在release分支修复并提交。

测试完成之后,将 release 分支合并到 master 和 develop 分支,此时 master 为最新代码,用作上线。

5、修复分支(hotfix/bugfix)

修复分支用于解决线上紧急bug或修复已知问题,从 master 分支创建以确保修复代码直接应用于稳定版本,命名格式为hotfix/xxxbugfix/xxx

完成bug修复后将代码合并到master分支和develop分支,合并完成后可以删除该分支。

长期稳定存在的分支只有 master 和 develop 分支,别的分支在完成对应的使命之后都会合并到这两个分支然后被删除。

简单总结如下:

分支 作用
master 线上稳定版本分支
develop 衍生出 feature 分支和 release 分支
feature 完成特定功能开发的分支,存在多个,功能合并之后删除
release 准备待发布版本的分支,存在多个,版本发布之后删除
hotfix 紧急热修复分支,存在多个,紧急版本发布之后删除

分支示意图如下:

2.3.2 解决冲突

下面是在命令行常见的解决冲突步骤:

  • 使用git status命令查看哪些文件存在冲突。
  • 使用git diff命令查看冲突文件的差异。
  • 手动解决冲突,并验证解决后是否正确。
  • 使用git add标记为冲突已解决。
  • 使用git commit命令提交解决冲突后的更改。

2.4 忽略文件

.gitignore忽略文件:忽略项目代码中不需要的文件,一般是编译文件、临时文件等,把它们纳入版本控制系统中毫无意义。

存放在项目的根目录。

.gitignore内容:

bash 复制代码
.git
logs
rebel.xml
target/
!.mvn/wrapper/maven-wrapper.jar
log.path_IS_UNDEFINED
.DS_Store
offline_user.md
*.class

### IntelliJ IDEA ###
.idea
*.iws
*.ipr

2.5 IDEA集成Git

2.5.1 在IDEA中配置Git

在idea的settings面板中,【Version Control】=>【Git】

  • 指定Git安装路径【Path to Git executable】

2.5.2 IDEA中的操作方法

本地仓库操作

1、初始化本地仓库【Create Git Repository】

  • 依次选择菜单【Version control】---【Create Git Repository】
  • 选择当前项目根目录,点击【OK】

2、克隆远程仓库【Clone】

  • 在IDEA的菜单栏中选择Git,再点击【Get from Version Control】或者【Clone】
  • 在弹出的【Clone Repository】窗口中输入远程仓库的URL地址和对应的本地仓库存放目录,点击【Clone】按钮进行仓库克隆操作

3、将文件加入到暂存区

  • 右键文件或项目,选择【Git】,选择【Add】
  • 文件变成绿色即为成功

4、将暂存区文件提交到版本库

  • 右键文件或项目,选择【Git】,选择【Commit ...】
  • 提交本次的日志信息
  • 文件变成黑色即为成功

5、查看日志

  • 右键文件或项目,选择【Git】,选择【Show History】
  • 展示了提交的日志列表信息即为成功

远程仓库操作

1、查看远程仓库和添加远程仓库

  • 右键项目,找到【Git】-->【Manage Remotes...】
  • 在弹出的框中可以查看已经关联的远程仓库,如果没有,则可以点击"+"号来新增远程仓库

2、推送至远程仓库

  • 在当前分支中,点击【Push...】
  • 在弹出的【Push Commits】窗口中可以看到本次推送的文件,点击【Push】按钮即可

3、从远程仓库拉取代码

  • 在当前分支中,点击【Update Project...】

分支操作

1、查看分支

  • 在【Version control】查看即可
  • 书签标记代表当前使用分支

2、创建分支

  • 分支窗口中点击【New Branch】,弹出输入分支名称,点击Create按钮,完成分支的创建

3、切换分支

  • 点击要切换的分支,选择【Checkout】

4、推送分支

  • 点击当前分支,选择【Push...】

5、合并分支

  • 点击要切换的分支,选择【Merge】

6、解决冲突

  • 推荐点击【Merge...】
  • 有三个框,根据实际情况合并