使用Git从其他分支合并某一个功能

276 阅读2分钟

在工作中,时常遇到开发分支需要合并某一个分支的一块功能(并非全部代码),此时利用Git的策略机制有两种可靠的方案。

假设开发分支为 feature-base ,想要合并的分支为 feature-task,需要合并的部分功能为任务流

使用 checkout + merge 实现智能合并

  • 首先使用 git checkout 根据 feature-base 分支创建一个 feature-temp 分支 (过渡分支)

    git checkout -b feature-temp

  • 然后使用 git merge 合并 feature-task 分支,任务流功能对应的部分文件可能会和 feature-temp 分支产生冲突,解决冲突即可

    git merge feature-task

  • 再次切换到 feature-base 分支,将使用 git checkout 将 feature-temp 分支上的任务流功能相关文件或文件夹覆盖到 feature-base 分支(已经处理过冲突,可以强制覆盖)

    git checkout feature-base

    git checkout feature-temp taskA.vue taskB.vue task.js

  • 删除冗余分支 feature-temp

    git branch -D feature-temp

使用 cherry-pick 来捡出部分代码变动

git cherry-pick 命令的作用,就是将指定的提交应用于其他分支

常用命令介绍

  • git cherry-pick <commitHash> : 此命令就会将指定的提交 commitHash ,应用于当前分支。这会在当前分支产生一个新的提交,当然它们的哈希值是不一样的

  • git cherry-pick <branch> : 此命令就会将 branch 最新提交应用到当前分支

  • git cherry-pick <HashA> <HashB> :此命令将 A 和 B 两个提交应用到当前分支。这会在当前分支生成两个对应的新提交

  • git cherry-pick A..B : 此命令可将 (A , B] 的所有提交应用到当期分支。它们必须按照正确的顺序放置: 提交 A 必须早于提交B,否则命令将会失败,但不会报错

  • git cherry-pick A^..B : 此命令同上,但应用区间为 [A,B]


参考文章: