开发人员应该从主模块创建一个特性分支,然后开始编码,但是他们已经从开发分支创建了一个特性分支,然后合并到一个开发分支中。(并不是开发分支的所有功能都在主分支上)
当我试图创建一个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)
我需要做樱桃采摘还是有什么其他解决方案来解决这个问题?几个特征分支也有同样的问题。
发布于 2018-10-28 17:14:23
问题所在
合并操作将两个(或多个)分支连接到一个单独的提交(合并提交)中。你的情况如下:
A - B (master)
\
C - D (develop)
\
E (Task-6-Suspend-Post)由于Task-6-Suspend-Post分支是从develop创建的,因此它在历史记录中包含提交、C和D。在将Task-6-Suspend-Post合并为master时,以下历史记录如下所示:
A - B --------- G
\ /
C - D /
\ /
E 换句话说,PR是为最新的主服务器(B)和最新的Task-6-Suspend-Post (E)创建合并提交的请求。这将使提交C和D在主服务器的历史记录中可用,因此包含在拉请求中。
解决方案
做一个重基的Task-6-Suspend-Post将解决您的问题。
git rebase master Task-6-Suspend-Post上面的命令将创建一个新的提交E',其内容与E相同,但以主(B)为父级。分支指针Task-6-Suspend-Post将附加到新的E'提交。
E' (Task-6-Suspend-Post)
/
A - B (master)
\
C - D (develop)通过强制推动新的Task-6-Suspend-Post并发出新的拉请求,只有一个提交应该是PR的一部分。
git push origin -f发布于 2018-10-28 17:18:13
如果它是一个单一的承诺,樱桃选择是可行的。然而,rebase为您移动分支做了大量工作。通过多次提交,重基还需要更少的工作量。
使用具有当前特性和错误修复的开发分支,常见的工作流程是从开发分支创建新的功能分支,而不是从主服务器创建新功能分支。然后将特征分支合并到开发中。然后,也可以从开发中创建一个发布分支,当您做好准备时,当最终版本发生时,合并到主版中并标记发行版。
https://stackoverflow.com/questions/53032667
复制相似问题