如何通过 Bitbucket 中的拉取请求变基

Posted

技术标签:

【中文标题】如何通过 Bitbucket 中的拉取请求变基【英文标题】:How to rebase via pull request in Bitbucket 【发布时间】:2020-08-24 19:39:28 【问题描述】:

我们的团队使用 Bitbucket 进行协作,我们为 masterdevelop 分支启用了拉取请求工作流。这意味着这两个分支变成只读的并且不能被pushed 到。只能通过从它们创建分支、进行更改、推送分支、从中创建拉取请求并让其他团队成员对其进行审核并通过 BitBucket 接口将请求合并到原始分支之上来更改它们。

不幸的是,在创建合并请求时,BitBucket 接口默认为master,而不是当前功能分支的实际父分支,有时团队成员在创建合并请求或批准它之前忘记将其更改为develop .这导致 masterdevelop 彼此分歧,现在当我们想要发布时,我们无法将 develop 合并到 master 之上。

如果develop没有被禁止push到,我可以从masterrebase它,应用所有不存在的提交,然后push --force使其成为@987654335的后代@。

我尝试从developrebase 将其从master 分支,使其包含来自master 的所有提交,然后将其作为合并请求发送到develop,但存在合并冲突和BitBucket 拒绝允许它合并。

现在我被困住了。我该如何解决这个问题?

【问题讨论】:

你能分享你的开发和工作分支的 git 图吗?理想情况下,您的问题不应该发生。 【参考方案1】:

您可以结帐到您的master 分支并通过

master 获取最新信息
git pull --rebase origin master

由于您被禁止同时推入masterdevelop,您可以尝试通过master 签出新分支

git checkout -b <new-branch-name>

现在你会在,从你的develop 分支变基

git rebase develop

现在您将拥有 master 和 development 中的所有提交,您可以通过

删除 develop 分支
git branch -D develop
git push -d origin develop

并推送通过

git push -u origin <new-branch-name>

然后向 master 提出一个 Pull Request。 希望这能解决您的问题。

【讨论】:

【参考方案2】:

您在合并期间尝试过快进选项吗?它实际上帮助我保持树木清洁。

【讨论】:

以上是关于如何通过 Bitbucket 中的拉取请求变基的主要内容,如果未能解决你的问题,请参考以下文章

我们如何捕获在bitbucket云中创建的拉取请求

bitbucket 上的拉取请求不会触发竹子上的构建

如何撤消对特定文件的已提交更改而不进行变基?

如何从 GIT 恢复旧的拉取请求

如何创建从一个分支的 Bitbucket 到 GitHub 中的主分支的合并拉取请求

如何为 lint 和运行测试的拉取请求编写管道