文章目录
11.1 介绍
11.1.1 一个分支实例
11.1.2 分支合并示意图
- 分支可以有多个 (根据业务需求)
- 如果各分支没有交集,始终平行发展,则不需要合并 (merge)
- 如果两个分支,需要合并,则执行 merge 操作
11.2 创建 IDEA Maven 项目,和 Gitee 的 xjs-erp 代码仓库关联
- 先在 Gitee 创建仓库 hsp-erp, 并设置成开源
- 在新的目录比如 d:/idea_projects 使用 idea 创建 xjs-erp maven ,并和 Gitee 仓库 xjs-erp 关联,前面已经学过了,自己回顾一下
- 创建文件 XjsErpApplication.java ,写入一些内容
- 将 XjsErpApplication.java push 到 Gitee 远程仓库,执行 add => commit => push
- 观察 Gitee 远程仓库是否已经 push 成功
11.3 git 分支指令
11.3.2 指令一览
# 列出所有本地分支
$ git branch
# 列出所有远程分支
$ git branch -r
# 列出所有本地分支和远程分支
$ git branch -a
# 新建一个分支,但依然停留在当前分支
$ git branch [branch-name]
# 新建一个分支,并切换到该分支
$ git checkout -b [branch]
# 新建一个分支,指向指定commit
$ git branch [branch] [commit]
# 新建一个分支,与指定的远程分支建立追踪关系
$ git branch --track [branch] [remote-branch]
# 切换到指定分支,并更新工作区
$ git checkout [branch-name]
# 切换到上一个分支
$ git checkout -
# 建立追踪关系,在现有分支与指定的远程分支之间
$ git branch --set-upstream [branch] [remote-branch]
# 合并指定分支到当前分支
$ git merge [branch]
# 选择一个commit,合并进当前分支
$ git cherry-pick [commit]
# 删除分支
$ git branch -d [branch-name]
# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]
11.3.3 应用实例
11.3.3.1 需求:克隆 xjs-erp 仓库, 创建分支 v1.0 并提交到远程仓库
11.3.3.2 指令操作演示
特别说明:
- 当执行
git checkout v1.0
指令后,会切换到指定分支 v1.0 - 这时工作区:workspace 代码就是在 v1.0 下生效
- 你 commit 和 push 就是针对 v1.0 这个分支
- 使用
git branch
指令,再次查看本地分支,发现已经切换到 v1.0 了 - 注意看 颜色 和 * 的变化
#将本地分支 v1.0 作为独立分支提交到远程
git push origin v1.0:v1.0
11.4 IDEA 项目创建分支
- 创建分支
- 把分支同步到 Gitee 远程仓库
- 查看远程仓库
11.5 IDEA 项目切换分支, 进行工作
- 切换分支 (指令 checkout)
- 在 v2.0 分支下,我们修改/增加一下文件,就是针对当前 v2.0 的
- 把 XjsErpApplication.java Add => Commit => Push 到 Remote 仓库,按照步骤来
- 观察 Gitee 的远程仓库变化
- 观察本地仓库 版本切换的变化
11.6 IDEA 项目分支合并, 没有冲突的情况
● 在进行分支合并时,如果没有冲突 (比如没有修改同一个文件),这时会比较顺畅
- 案例演示/需求说明:将分支 v3.0 合并到 Master 主分支
- 从 master 开一个分支 v3.0 ,在 v3.0 增加一些文件,不在 master 和 v3.0 修改同一个文件
- 将分支 v3.0 同步到 Gitee 远程仓库,操作步骤和前面 v2.0 一样
- 切换到 v3.0 ,并增加一个文件 Hi.java ,并 Add => Commit => Push 到远程仓库
- 注意看 Master 主分支,在本地仓库和远程仓库,都没有 Hi.java
- 将 v3.0 合并到 Master 分支,注意当前是 Master (看图标)
- 注意看 Master 主分支,这时在本地仓库,有 Hi.java ,但是远程仓库还没有
- 将本地的 Master 分支,Push 到远程仓库,这时观察远程仓库 Master 下也有 HI.java 了
11.7 IDEA 项目分支合并,有冲突的情况
11.7.1 手动修改,解决冲突
● 如果同一文件在合并分支时都被修改了则会引起冲突,修改冲突文件后重新提交 (说明:这时要决定保留哪个分支代码)
- 案例演示/需求说明:将分支 v3.0 合并到 Master 主分支
- 切换到 v3.0 ,修改 XjsErpApplication.java
- 把 XjsErpApplication.java 进行 Add => Commit => Push 操作 (如果已经 Add 过, 就不需要Add)
- 切换到 Master ,也修改一下 Master 的 XjsErpApplication.java ,同样进行
Add => Commit => Push (如果已经 Add 过,就不需要 Add) 操作
- 将 V3.0 合并到 Master
========== 出现冲突 ==========
11.7.1 接受某一方,解决冲突
- 案例演示/需求说明:将分支 v2.0 合并到 Master 主分支
- 切换到 v2.0, 修改 HspErpApplication.java ,并 add => commit => push
- 切 换 到 Master ,也 修 改 一 下 Master 的 HspErpApplication.java ,同样进行 Add => Commit => Push (如果已经 Add 过,就不需要 Add) 操作
- 将 V3.0 合并到 Master
========== 出现冲突 ==========
- 观察本地的 Master 分支的 XjsErpApplication.java ,没有变化 (以master为准) ,这里相当于放弃了 v2.0 的编辑,可以不用 push ,因为本地 master 分支 和 远程的 master 是一样的
- 注意:这里如果是以 v2.0 为准来解决合并冲突,则需将 Master Push 到 Gitee 远程仓库,这样就会看到相应的变化 (注意在 Push 前,请确认要 Push 的文件/文件夹是已经 Committed ,否则你看不到变化)
11.8 IDEA 项目删除分支
11.8.1 彻底删除某个分支
- 如果某个分支不需要了,可以删除,一定要慎重
- 注意观察远程仓库,分支 V3.0 也没有了
11.8.2 只删除本地分支,还可以重新获取
- 删除本地的 v2.0 分支
- 从远程仓库获取刚刚删除的 v2.0 分支
11.9 注意事项和细节说明
- 如果同一文件在合并分支时都被修改了则会引起冲突,修改冲突文件后重新提 (说明:这时要决定保留哪个分支代码)
- Master 主分支应该非常稳定,用来发布新版本,一般情况下不要在上面工作,工作一般在新建的分支 (比如 dev、v1.0、v2.0) 上工作
- 分支代码稳定后,可以合并到主分支 Master
- 在进行分支合并时,最好是各分支都已经处于 Committed 的状态,这样可以减小处理合并冲突的难度
- Push 操作,是 Push 你已经 Committed 的代码,如果你修改了一个文件,但是你没有执行 Commit ,那么你 Push 的其实是上次 Committed 的状态
- add 、 commit 、push 的操作可以针对单个文件,也可以针对文件夹 (可以看一下 Idea 的 git 操作菜单)
- 文件要 Commit 前需要先 Add 到 暂存区 ,以后文件修改了,就可以直接 Commit
- 如果要删除文件,可以在本地删除该文件,然后 commit 文件所在文件夹即可,并重新 push 该分支,那么在远程仓库,也会删除对应分支的文件