GitLab教程(四):分支(branch)和合并(merge)

1.分支(branch)

(1)分支的概念

Git的分支(Branch)是Git版本控制系统中的一个核心概念,它允许你创建代码的多个并行版本,从而使得团队成员可以在不影响主开发线路的情况下进行功能开发、错误修复或实验性尝试。以下是关于Git分支的一些关键点:

  • 为什么使用分支?
  1. 隔离开发:分支允许开发者在不影响主分支(如mastermain)的情况下工作,这样就可以安全地进行新功能的添加或错误的修复。
  2. 并行开发:团队成员可以同时在不同的分支上工作,提高开发效率。
  3. 易于管理:通过为每个任务或特性创建独立的分支,可以清晰地组织和追踪工作进度。
  4. 风险降低:在分支上进行的实验性修改如果失败,不会影响到稳定代码,降低了引入错误的风险。
  • 分支策略:
  1. 特性分支:为每个新功能创建一个分支,完成开发并测试通过后合并回主线。
  2. Bug修复分支:针对发现的bug创建专门的分支进行修复,修复完成后合并到相关分支。
  3. 发布分支:准备发布时,从主分支创建一个发布分支进行最终测试和调整,确保不影响正在进行的开发工作。
  4. 主分支(main/master):保持稳定,只接受已测试和审查过的代码合并。

(2)branch命令

  • git branch查看当前所处分支:
    在这里插入图片描述

  • git branch xx分支名创建一个新分支:

在这里插入图片描述

  • git checkout xx分支名切换到目标分支:

在这里插入图片描述

  • git checkout -b xx分支名创建并切换分支(相当于合并了上两条命令):

在这里插入图片描述

  • git branch -d xx分支名删除目标分支:

在这里插入图片描述

注意:不能删除当前的分支

在这里插入图片描述

2.合并(merge)

(1)三个命令pull=fetch+merge

在Git中,pullfetchmerge 是三个非常重要的命令,它们帮助你与远程仓库同步代码。下面是这三个命令的解释和用法:

git fetch

git fetch 命令用于从远程仓库下载最新的分支和标签数据到本地仓库,但不会自动合并到你当前的工作分支。这个过程不会改变你当前的工作副本,只是让你能够查看远程仓库中的最新状态。

命令格式如下:

git fetch [remote]

其中,[remote] 是你想要获取更新的远程仓库名称,默认是 origin

git merge

git merge 命令用于将一个或多个分支的修改合并到当前分支。当你已经通过 git fetch 获取了远程分支的最新变化,或者当你想要合并本地的一个分支到当前分支时,就会用到这个命令。

命令格式:

git merge [branch]

这里的 [branch] 是你想要合并进来的分支名。

git pull

git pull 是一个复合命令,它实际上执行了 git fetch 和随后的 git merge 操作。也就是说,git pull 不仅会从远程仓库获取最新的数据,还会自动尝试将获取到的分支合并到你当前所在的本地分支上。

命令格式:

git pull [remote] [branch]

如果不指定 [branch],默认会尝试合并远程分支到当前分支。同样,如果没有指定 [remote],则默认为 origin

在这里插入图片描述

(2)合并冲突

当执行 merge 命令进行合并时,Git具备一定的智能自动化处理能力:如果一个分支仅修改了文件A,而另一个分支独立地修改了文件B,Git能够无缝整合这些更改,自动完成合并过程——即最终的代码既包含了对A文件的修改也包含了对B文件的修改。同样地,若两个分支虽然都修改了同一个文件,但涉及的是文件中互不重叠的部分,比如一个改动发生在第一行,另一个则在第二行,Git同样能巧妙地自动合并这些非冲突性修改。

然而,当两个分支修改了同一文件的相同部分时,merge操作就会遇到挑战,这时Git的自动合并算法无法确定应该采用哪个分支的修改。这种情况下,Git会标记这些区域为“冲突”(Conflict)。遭遇冲突时,Git会暂停合并过程,并在冲突文件中明确标记出争议区域,同时留下标记指示哪些是来自不同分支的修改内容。此时,就需要开发者介入,手动检查这些冲突,决定如何解决分歧,保留或结合双方的修改,以达到期望的合并结果。

在这里插入图片描述

解决方法一:解决冲突

  • 修改发生冲突的代码部分:

在这里插入图片描述

可以看到,Git 虽然没有帮你完成自动 merge,但它对文件还是做了一些工作:它把两个分支冲突的内容放在了一起,并用符号标记出了它们的边界以及它们的出处。上面图中表示,HEAD 中的内容是 code 222,而 refs/remotes/origin/main 中的内容则是 code 111。这两个改动 Git 不知道应该怎样合并,于是把它们放在一起,由你来决定。假设你决定保留 HEAD 的修改,那么只要删除掉 refs/remotes/origin/main 的修改,再把 Git 添加的那三行 <<< === >>> 辅助文字也删掉,保存文件退出,所谓的「解决掉冲突」就完成了。

  • 执行git add和git commit提交修改:

在这里插入图片描述

解决方法二:放弃merge

执行git merge --abort让Git 仓库回到 merge 前的状态。

相关推荐

  1. git merge 命令合并指定分支到当前分支

    2024-06-13 13:04:03       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-13 13:04:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-13 13:04:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-13 13:04:03       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-13 13:04:03       20 阅读

热门阅读

  1. 2024年6月关于docker拉取镜像超时失败问题解决

    2024-06-13 13:04:03       12 阅读
  2. 【吃包子game】

    2024-06-13 13:04:03       8 阅读
  3. 电脑快捷键大全

    2024-06-13 13:04:03       8 阅读
  4. Doris的数据模型

    2024-06-13 13:04:03       8 阅读
  5. coco json 改名字 划分验证集

    2024-06-13 13:04:03       6 阅读
  6. (message): No CUDA toolset found.

    2024-06-13 13:04:03       7 阅读
  7. DM存储ontap系统修改管理IP

    2024-06-13 13:04:03       8 阅读
  8. Python多继承机制及方法解析顺序(MRO)深度解析

    2024-06-13 13:04:03       7 阅读