图解Git——分支的新建与合并《Pro Git》

news/2025/1/15 0:54:38/

⭐分支的新建与合并

先引入一个实际开发的工作流:

  1. 开发某个网站。
  2. 为实现某个新的需求,创建一个分支。
  3. 在这个分支上开展工作。

正在此时,你突然接到一个电话说有个很严重的问题需要紧急修补。你将按照如下方式来处理:

  1. 切换到你的线上分支(production branch)。
  2. 为这个紧急任务新建一个分支,并在其中修复它。
  3. 在测试通过之后,切换到线上分支,然后合并这个修补分支,最后改动推送到线上分支。
  4. 切换回你最初工作的分支,继续工作。

1. 新建分支

  1. 首先,模拟你正在你的项目上工作,并且在 master分支上已经有了一些提交:
    1. 提交历史图:

  1. 现在,你将解决项目中 #53 问题,需要创建一个分支并切换到该分支:git checkout -b iss53——(创建分支git branch iss53切换分支git checkout iss53 的简写):
    1. 创建并切换后:

  1. 在新创建的分支上工作并做提交后:git commit -a -m 'added a new footer [issue 53]'
    1. 提交 iss53 后:

  1. 需要紧急修复 BUG(hotfix)时:
    1. 检查工作目录暂存区是否还存在未提交的修改:git status
    2. 切换回 master分支:git checkout master
    3. 建立 hotfix分支:git checkout -b hotfix
    4. 修复 Bug 后提交:git commit -a -m 'fixed the Bug'
    5. 提交后:

  1. 将修改后的 hotfix 分支合并到 master 分支:
    1. git checkout master:切换回 master 分支。
    2. git merge hotfix:合并 hotfix 分支。
    3. 这时会出现 Fast-forward: 在合并时,如果一个分支是另一个分支的直接后继,Git 会将指针直接向前推进,无需解决冲突,这种合并叫做“快进(fast-forward)”。
    4. 合并后,master 被快进到 hotfix

    5. 删除 hotfixgit branch -d hotfix
    6. 切换回工作分支— iss53分支:git checkout iss53
    7. 完成 iss53 工作后提交:git commit -a -m 'finished the new footer [issue53]'
      1. 提交 issue53 后的历史记录图:


2. 合并分支

模拟你已经完成了 iss53 的全部工作,并打算将其合并到 master 分支。

  1. 切换到 master 分支并合并 iss53
    1. 合并前:

    2. git checkout master
    3. git merge iss53
    4. 合并后:

    5. 三方合并:当两个分支的提交历史分叉时,Git 需要做三方合并,使用两个分支的末端快照和公共祖先来合并。与快进合并不同,Git 会创建一个新的合并提交,它有多个父提交。
    6. 删除 iss53分支:git branch -d iss53

3. 遇到冲突时的合并分支

模拟合并时并不顺利,出现了冲突:对同一个文件的同一个部分进行了不同的修改,Git 就没法干净的合并它们。

$ git merge iss53
Auto-merging index.html
CONFLICT (content): Merge conflict in index.html
Automatic merge failed; fix conflicts and then commit the result.
  1. 查看冲突:使用 git status命令查看冲突的原因:
$ git status
On branch master
You have unmerged paths.(fix conflicts and run "git commit")Unmerged paths:(use "git add <file>..." to mark resolution)both modified:      index.htmlno changes added to commit (use "git add" and/or "git commit -a")
  1. 解决冲突
    1. 打开有冲突的文件,Git 会在冲突部分插入特殊标记:
<<<<<<< HEAD:index.html
<div id="footer">contact : email.support@github.com</div>
=======
<div id="footer">
please contact us at support@github.com
</div>
>>>>>>> iss53:index.html
    1. 你需要选择保留一个版本的内容,或合并两者的内容。解决后,删除冲突标记(<<<<<<<, =======, >>>>>>>)。
  1. 标记冲突已解决:
    1. git add将解决后的冲突标记为已解决:git add index.hmtl
  1. 完成合并并提交:
    1. git commit完成合并并提交。
    2. Git 会自动生成一个合并提交信息,例如:
Merge branch 'iss53'
Conflicts:index.html
  1. 使用图形化工具(可选):
    1. 如果需要,可以运行 git mergetool 启动图形化工具来帮助解决冲突:git mergetool


http://www.ppmy.cn/news/1563179.html

相关文章

iOS手势shouldBeRequiredToFailByGestureRecognizer 机制

我们在iOS的手势代理方法中看到这样三个方法 (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecogni…

《Java核心技术II》网络使用telnet

使用telnet telnet是一种用于网络编程的非常强大的调试工具&#xff0c;可以在命令shell中输入telnet来启动它。 注释&#xff1a;在Windows中需要激活它&#xff0c;控制面板->程序->打开/关闭Windows特性->Telnet客户端。 连接当日时间服务 连接到当日时间服务&…

如何确保api采集到的小红书笔记图片的版权合法性?

在采集小红书笔记图片时&#xff0c;确保版权合法性是非常重要的&#xff0c;以下是一些方法&#xff1a; 一、遵守平台规则 仔细阅读小红书使用条款 小红书有明确的社区规则和使用条款&#xff0c;其中涉及到对内容版权的规定。开发者应该认真研究这些条款&#xff0c;明确什么…

C#解决浮点数精度丢失的问题(参考方案)

问题描述 直接看代码 按照正常来说这里因该打印的结果是0.1 但是这里精度丢失了&#xff0c;这里我试了很多办法最终想到了下面的解决办法。 这时候我们需要用逆转的思路来解决问题。 既然浮点数有问题那么直接把它转成整数不就行了。 用这种方法就可以打印出一个数的小数部…

14. C语言 指针(深入理解)

本章目录: 前言&#xff1a;什么是指针&#xff1f; 内存与地址&#xff1a;指针的基础指针的声明与使用指针变量的声明指针与地址的关系 空指针与野指针空指针&#xff08;NULL Pointer&#xff09;野指针&#xff08;Dangling Pointer&#xff09; 指针进阶&#xff1a;从数组…

H266/VVC 帧内预测中 ISP 技术

帧内子划分 ISP ISP 技术是在 JVET-2002-v3 提案中详细介绍其原理&#xff0c;在 VTM8 中完整展示算法。ISP是线基内预测&#xff08;LIP&#xff09;模式的更新版本&#xff0c;它改善了原始方法在编码增益和复杂度之间的权衡&#xff0c;ISP 算法的核心原理就是利用较近的像…

centos systemd方式配置jar开机自启

将后端服务&#xff08;一个 Java 应用程序&#xff09;注册为 CentOS 上的 systemd 服务&#xff0c;可以让你方便地管理其启动、停止和重启。以下是详细步骤&#xff1a; 创建 systemd 服务单元文件 创建一个 systemd 服务单元文件&#xff0c;例如 /etc/systemd/system/de…

基于php的web系统漏洞攻击靶场设计与实践

web系统漏洞攻击靶场 摘 要 互联网极速发展的同时&#xff0c;也会带来一些安全性的风险&#xff0c;一些不为人知的安全问题也逐渐暴露出来。近年来&#xff0c;媒体不断披露了许多网络安全事故&#xff0c;许多网络应用程序被黑客攻击&#xff0c;导致内部数据外泄&#xf…