Jamey's Jamey's
首页
导航站
  • 学习专栏

    • 《HTML》笔记
    • 《CSS》笔记
    • 《JavaScript》笔记
    • 《Vue》笔记
    • 《Git》笔记
    • 《规范》笔记
    • 《软技能》笔记
    • 《面试》笔记
    • 《持续集成&交付&部署》笔记
  • 踩坑专栏

    • 《Element-UI 实践系列》笔记
    • 《移动端 实践系列》笔记
    • 《综合》笔记
  • 配置专栏

    • 《环境系列》笔记
  • 极空间

    • Docker
  • 影视

    • movie
  • 编辑器笔记

    • 开发编辑器
  • 浏览器笔记

    • Chrome
  • Mac笔记

    • Mac
  • 跨界学习

    • 运营
  • 破解合集

    • 破解
  • 本站

    • 分类
    • 标签
    • 归档
  • 我的

    • 收藏
    • 书单
    • 关于

Jamey

首页
导航站
  • 学习专栏

    • 《HTML》笔记
    • 《CSS》笔记
    • 《JavaScript》笔记
    • 《Vue》笔记
    • 《Git》笔记
    • 《规范》笔记
    • 《软技能》笔记
    • 《面试》笔记
    • 《持续集成&交付&部署》笔记
  • 踩坑专栏

    • 《Element-UI 实践系列》笔记
    • 《移动端 实践系列》笔记
    • 《综合》笔记
  • 配置专栏

    • 《环境系列》笔记
  • 极空间

    • Docker
  • 影视

    • movie
  • 编辑器笔记

    • 开发编辑器
  • 浏览器笔记

    • Chrome
  • Mac笔记

    • Mac
  • 跨界学习

    • 运营
  • 破解合集

    • 破解
  • 本站

    • 分类
    • 标签
    • 归档
  • 我的

    • 收藏
    • 书单
    • 关于
  • 手册

  • 文档笔记

    • Git 基础与命令
    • Git 分支-分支原理
    • Git 分支的新建与合并-分支操作
      • 一. 创建分支并切换
      • 二. 切换分支
      • 三. 合并分支
      • 四. 删除分支
      • 五. 多次提交之后合并分支
      • 六. 遇到冲突时的分支合并
    • Git 分支管理-查看分支
    • Git 分支开发工作流
    • Git 分支-远程分支
    • Git 分支-变基
    • Git 工具-查看修订版本
    • Git 工具-交互式暂存
    • Git 工具-重写历史
    • Git 工具 - 重置揭密
  • 《Git》笔记
  • 文档笔记
Jamey
2022-03-01
目录

Git 分支的新建与合并-分支操作

# Git分支的新建与合并-分支操作

文档:Git 分支 - 分支的新建与合并 (opens new window)

# 一. 创建分支并切换

此时有一个需求需要在新的分支 iss53 上工作:

$ git checkout -b iss53  # b表示branch
1

它是下面两条命令的简写:

$ git branch iss53
$ git checkout iss53
1
2

# 二. 切换分支

突然有一个紧急问题要解决,需要在原来的 master 分支进行修复:

$ git checkout master
1

在切换到 master 之前,需要 iss53 分支保持好一个干净的状态(修改都已提交)。

注意:切换分支Git 会重置你的工作目录。

checkout 中文含义 “检出”,checkout <branch> 检出分支 => 检出指定分支的代码 => 重置工作目录并切换分支。

接下来,你要修复这个紧急问题。 建立一个 hotfix 分支,在该分支上工作直到问题解决:

$ git checkout -b hotfix

# 中间过程在hotfix上修改了代码并提交
$ echo 'test' > ./hotfix.txt
$ git add .
$ git commit -m 'fixed'
1
2
3
4
5
6

# 三. 合并分支

$ git checkout master # 首先切回master分支
$ git merge hotfix # 把 hotfix 分支合并过来
1
2

# 四. 删除分支

$ git branch -d hotfix # d表示delete

# 然后切回iss53继续工作
$ git checkout iss53
1
2
3
4

注意删除分支是在 branch 命令上

# 五. 多次提交之后合并分支

假设你已经修正了 #53 问题,打算合并到 master 分支:

$ git checkout master
$ git merga iss53
1
2

这看似和之前的合并区别不大。此时你的开发历史从一个更早的地方开始分叉开来(diverged)。 因为,master 分支所在提交并不是 iss53 分支所在提交的直接祖先,Git 不得不做一些额外的工作。 出现这种情况的时候,Git 会使用两个分支的末端所指的快照以及这两个分支的公共祖先,做一个简单的三方合并。

和之前将分支指针向前推进所不同的是,Git 将此次三方合并的结果做了一个新的快照并且自动创建一个新的提交指向它。 这个被称作一次合并提交,它的特别之处在于他有不止一个父提交。

# 六. 遇到冲突时的分支合并

如果你在两个不同的分支中,对同一个文件的同一个部分进行了不同的修改,Git 就没法干净的合并它们,就产生了冲突。

合并过程中出现CONFLICT提升,表示有冲突

$ 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
2
3
4

使用 git status 查看未合并状态。

任何因包含合并冲突而有待解决的文件,都会以未合并状态标识出来。 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
2
3
4
5
6
7

你需要手动解决冲突,解决了所有文件里的冲突之后,对每个文件使用 git add 命令来将其标记为冲突已解决。 一旦暂存这些原本有冲突的文件,Git 就会将它们标记为冲突已解决。

如果你对结果感到满意,并且确定之前有冲突的的文件都已经暂存了,这时你可以输入 git commit 来完成合并提交。

#Git
上次更新: 2022/04/25, 10:12:44
Git 分支-分支原理
Git 分支管理-查看分支

← Git 分支-分支原理 Git 分支管理-查看分支→

Theme by Vdoing | Copyright © 2017-2023 Jamey | blog 闽ICP备19022664号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式