假设我们在Git中有以下情况:
假设我需要我的特性分支中的修补程序,也许是因为bug也发生在那里。如何在不将提交复制到特性分支的情况下实现这一点?
我想防止在我的特性分支上得到两个与特性实现无关的新提交。这对我来说特别重要,如果我使用拉请求:所有这些提交也将包括在拉请求中,并且必须被检查,尽管这已经完成了(因为修复程序已经在主程序中)。
我不能做git merge master --ff-only:“致命:不可能快速转发,中止”,但我不确定这是否对我有帮助。
发布于 2013-06-06 08:42:35
如何将主分支合并到功能分支中?简单:
git checkout feature1
git merge master在这里强制快速推进合并是没有意义的,因为这是无法完成的。您同时提交了特性分支和主分支。快进现在是不可能的。
看看GitFlow。这是一个可以遵循的git分支模型,而且您已经无意识地这样做了。它也是Git的一个扩展,它为新的工作流步骤添加了一些命令,这些步骤可以自动执行,否则需要手动执行。
那么你在工作流程中做了什么呢?您有两个分支可以使用,您的feature1分支基本上是GitFlow模型中的“开发”分支。
您从master创建了一个修补程序分支,并将其合并回来。现在你被困住了。
GitFlow模型要求您将修补程序合并到开发分支,在您的情况下,开发分支是"feature1“。
所以真正的答案是:
git checkout feature1
git merge --no-ff hotfix1这将将在修复程序中进行的所有更改添加到功能分支,但只添加这些更改。它们可能与分支中的其他开发更改发生冲突,但如果您最终将特性分支合并回master,则不会与主分支发生冲突。
重新部署时要非常小心。只有当更改保持在存储库的本地,例如,您没有将任何分支推到其他存储库时,才会进行重基。重新定位是一个很好的工具,你可以把你的本地提交安排成一个有用的顺序,然后再把它推到世界上去,但是之后重新定位会给像你这样的初学者带来麻烦。
发布于 2013-06-06 07:24:07
你应该能够在师父的基础上重新建立你的分支:
git checkout feature1
git rebase master处理所有出现的冲突。当您使用错误修复(已经在主版中)进行提交时,Git会说没有发生任何更改,并且可能已经应用了它们。然后继续重基(同时跳过已在master中的提交)。
git rebase --skip如果您在特性分支上执行git log,您将看到错误修复提交只出现一次,并且出现在主部分中。
要获得更详细的讨论,请查看关于git rebase (https://git-scm.com/docs/git-rebase)的Git图书文档,该文档涵盖了这个精确的用例。
用于附加上下文的================编辑====================
这一答复是针对@theomega提出的问题提供的,考虑到了他的特殊情况。注:本部:
我想阻止..。在与特性实现无关的特性分支上提交。
把他的私人分支重新建立在师父的基础上,才会产生这样的结果。相反,将主从合并到他的分支中,将精确地完成他特别不希望发生的事情:添加一个与他通过分支正在处理的特性实现无关的提交。
要针对阅读问题标题的用户,跳过问题的实际内容和上下文,然后只盲目地阅读顶部的答案,假设它总是适用于他们(不同的)用例,请允许我详细说明:
git merge master )。最后,如果你不满意这个答案并不适合你的情况,即使它是对@theomega,在下面添加一个评论不会特别有帮助:我不控制选择哪个答案,只有@theomega。
发布于 2019-11-12 07:38:49
git merge
您可以按照以下步骤操作
1.将origin/master分支合并到feature分支
# step1: change branch to master, and pull to update all commits
$ git checkout master
$ git pull
# step2: change branch to target, and pull to update commits
$ git checkout feature
$ git pull
# step3: merge master to feature(⚠️ current is feature branch)
$ git merge master2.将feature分支合并到origin/master分支
origin/master是远程主分支,而master是本地主分支。
$ git checkout master
$ git pull origin/master
$ git merge feature
$ git push origin/masterhttps://stackoverflow.com/questions/16955980
复制相似问题