首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我要去摘樱桃吗?

我要去摘樱桃吗?
EN

Stack Overflow用户
提问于 2018-10-28 14:40:05
回答 2查看 76关注 0票数 2

开发人员应该从主模块创建一个特性分支,然后开始编码,但是他们已经从开发分支创建了一个特性分支,然后合并到一个开发分支中。(并不是开发分支的所有功能都在主分支上)

当我试图创建一个PR来将他的特性分支(不是开发分支)合并到一个发布分支(发布分支是从一个主分支创建的)--它显示的是PR上的提交,而他没有提交,而提交是从开发分支显示的,而主分支上并不存在。为什么会发生这种事?

开发人员只将Task-6 Suspend Post提交到Task-6-Suspend-Post分支。

示例:

https://github.com/superc0der/test/compare/RELEASE/1.5.0...Task-6-Suspend-Post?expand=1

只有Task-6 Suspend Post应该在发布分支上合并。(https://github.com/superc0der/test/commit/62f68ec3d951bca5b848932df01ea8a29f0f562f)

我需要做樱桃采摘还是有什么其他解决方案来解决这个问题?几个特征分支也有同样的问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-28 17:14:23

问题所在

合并操作将两个(或多个)分支连接到一个单独的提交(合并提交)中。你的情况如下:

代码语言:javascript
复制
A - B (master)
     \              
      C - D (develop)     
           \     
            E (Task-6-Suspend-Post)

由于Task-6-Suspend-Post分支是从develop创建的,因此它在历史记录中包含提交、CD。在将Task-6-Suspend-Post合并为master时,以下历史记录如下所示:

代码语言:javascript
复制
A - B --------- G
     \         / 
      C - D   /
           \ /
            E 

换句话说,PR是为最新的主服务器(B)和最新的Task-6-Suspend-Post (E)创建合并提交的请求。这将使提交CD在主服务器的历史记录中可用,因此包含在拉请求中。

解决方案

做一个重基Task-6-Suspend-Post将解决您的问题。

代码语言:javascript
复制
git rebase master Task-6-Suspend-Post

上面的命令将创建一个新的提交E',其内容与E相同,但以主(B)为父级。分支指针Task-6-Suspend-Post将附加到新的E'提交。

代码语言:javascript
复制
     E' (Task-6-Suspend-Post)
    /
A - B (master)
     \              
      C - D (develop)

通过强制推动新的Task-6-Suspend-Post并发出新的拉请求,只有一个提交应该是PR的一部分。

代码语言:javascript
复制
git push origin -f
票数 2
EN

Stack Overflow用户

发布于 2018-10-28 17:18:13

如果它是一个单一的承诺,樱桃选择是可行的。然而,rebase为您移动分支做了大量工作。通过多次提交,重基还需要更少的工作量。

使用具有当前特性和错误修复的开发分支,常见的工作流程是从开发分支创建新的功能分支,而不是从主服务器创建新功能分支。然后将特征分支合并到开发中。然后,也可以从开发中创建一个发布分支,当您做好准备时,当最终版本发生时,合并到主版中并标记发行版。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53032667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档