当前位置: 首页 > 知识库问答 >
问题:

Git将热修复补丁分支合并到功能分支

裴欣然
2023-03-14

假设我们在Git中有以下情况:

>

  • 创建的存储库:

    mkdir GitTest2
    cd GitTest2
    git init
    

    主服务器中的某些修改发生并提交:

    echo "On Master" > file
    git commit -a -m "Initial commit"
    

    功能1从master分支,完成了一些工作:

    git branch feature1
    git checkout feature1
    echo "Feature1" > featureFile
    git commit -a -m "Commit for feature1"
    

    同时,在主代码中发现一个bug,并建立一个热修复分支:

    git checkout master
    git branch hotfix1
    git checkout hotfix1
    

    该错误在修补程序分支中修复,并合并回主程序(可能在拉取请求/代码审查之后):

    echo "Bugfix" > bugfixFile
    git commit -a -m "Bugfix Commit"
    git checkout master
    git merge --no-ff hotfix1
    

    功能1的发展仍在继续:

    git checkout feature1
    

    假设我需要功能分支中的修补程序,可能是因为bug也发生在那里。如何在不将提交复制到功能分支的情况下实现这一点?

    我想防止在我的功能分支上获得两个与功能实现无关的新提交。如果我使用拉请求,这对我来说尤其重要:所有这些提交也将包含在拉请求中,并且必须进行审查,尽管这已经完成(因为修补程序已经在主程序中)。

    我不能做一个git合并主机--ff only:“致命:不可能快进,正在中止”,但我不确定这是否对我有帮助。

  • 共有1个答案

    涂玉韵
    2023-03-14

    我们如何将主分支合并到特征分支中?简单:

    git checkout feature1
    git merge master
    

    在这里强制进行快进合并没有意义,因为这是不可能的。您已将两者提交到功能分支和主分支。现在快进是不可能的。

    看看GitFlow。这是一个可以遵循的git分支模型,你不知不觉中已经遵循了。它也是Git的一个扩展,它为新的工作流步骤添加了一些命令,这些步骤会自动执行您需要手动执行的操作。

    那么,您在工作html" target="_blank">流程中正确地做了什么?您有两个分支可以使用,您的feature1分支基本上就是GitFlow模型中的“开发”分支。

    您从master创建了一个修补程序分支,并将其合并回来。现在你被卡住了。

    GitFlow模型要求您将热修复程序也合并到开发分支中,这在您的案例中是“feature1”。

    因此,真正的答案是:

    git checkout feature1
    git merge --no-ff hotfix1
    

    这会将修补程序内所做的所有更改添加到功能分支,但仅添加这些更改。它们可能会与分支中的其他开发更改冲突,但如果最终将要素分支合并回主分支,则它们不会与主分支冲突。

    要非常小心重新定基。仅当您所做的更改保留在存储库的本地时才重新设置基础,例如,您没有将任何分支推送到其他存储库。重定基址是一个很好的工具,您可以在将本地提交推向世界之前将其安排成一个有用的顺序,但是对于像您这样的git初学者来说,之后的重定基址会把事情搞砸。

     类似资料:
    • 问题内容: 我正在寻找一种自动将Master分支合并到一个或多个开发分支的方法。换句话说,我想在多个项目中每天将团队开发部门与Master同步。 我一直在考虑使用Jenkins,但经验不足。Jenkins是否可以通过添加多个存储库URL,然后在配置中指定“合并到的分支”来提供此功能?与合并问题相比,我不太关心项目的构建。詹金斯将如何应对失败的合并? 詹金斯会很理想,但是如果有其他方法,我很想听听。

    • 我们将尝试在github中创建一个工作流,其中每个票据都是master的分支 票据完成后,工作将合并到暂存中,在暂存中执行回归和集成测试,然后将其合并到主控中。 一个团队领导提出了合并后旧票分支的问题。 我发现了这个脚本,想知道它是否能在我们的环境中工作。我们只想删除已经合并到主目录中的分支。

    • 我很想知道您是否可以,以及将提交合并到我的孤儿分支是否有任何问题。对于这个特定的实例,我的Salesforce存储库有一个主分支和一个预发布分支,但由于我们的沙盒环境通常有不属于生产的元数据,但我们希望对其进行版本控制,但与干净的预发布分支有足够的分离。 因此,我们有以下内容:

    • 让我们来看一个简单的分支新建与分支合并的例子,实际工作中你可能会用到类似的工作流。 你将经历如下步骤: 开发某个网站。 为实现某个新的需求,创建一个分支。 在这个分支上开展工作。 正在此时,你突然接到一个电话说有个很严重的问题需要紧急修补。 你将按照如下方式来处理: 切换到你的线上分支(production branch)。 为这个紧急任务新建一个分支,并在其中修复它。 在测试通过之后,切换回线上

    • 问题内容: 有什么方法可以将成功构建的功能分支推送到另一个分支? 我想要这样的东西: Git存储库(Gitorious / GitHub等)。分行: 掌握(当前项目的代码) 质量保证(代码等待质量检查的分支机构) 功能分支(许多远程分支,开发人员可以在其中开发其功能) 开发人员应仅具有对母版的读取访问权限,并且对其功能分支进行读/写QA读/写质量保证分支TeamCity-读/写母版,质量保证,仅对

    • 补丁是一个文本文件,其内容类似于,但与代码一样,它也有关于提交的元数据; 例如提交ID,日期,提交消息等。我们可以从提交创建一个补丁,而其他人可以将它们应用到他们的存储库。 假设我们在项目实现了一个函数。并将编写的代码的路径并发送给其他开发人员。 然后,其他开发人员可以将接收的补丁应用到自己的代码中。 我们使用命令创建最新提交的修补程序。 如果要为特定提交创建修补程序,请在命令后面指定 。 上述命