在 Bitbucket 中创建拉取请求:错误“不相关的分支”

Posted

技术标签:

【中文标题】在 Bitbucket 中创建拉取请求:错误“不相关的分支”【英文标题】:Creating a pull request in Bitucket: error "Unrelated branches" 【发布时间】:2018-02-19 19:17:42 【问题描述】:

我有一个小团队在单个存储库上工作,我要求我的每个队友在那里创建自己的分支并在那里工作,他们都克隆了存储库,然后他们执行了以下命令:

git checkout -b BitPankaj

BitPankaj是插图分支名称,他们开始在这个分支上工作并通过

上传到那里
git branch --set-upstream origin BitPankaj

现在在我的存储库中,我可以看到这些分支出现了,并且它们的提交也可见:

和分支:

现在他们每个人都试图创建一个拉取请求来审查那里的代码并合并到主分支。所以他们尝试做这样的事情:

但是会抛出不相关分支的错误:

保存此拉取请求时发生以下错误:不相关的分支

我们正在学习使用 git,请帮帮我。

【问题讨论】:

【参考方案1】:

这是因为BitPankaj 分支是孤儿分支。

这意味着BitPankaj 分支不是从master 分支创建的(如您所料),但可以使用git checkout --orphan BitPankaj 代替。分支结构如下:

A---B---…---C   master
D---…---E    BitPankaj

您可以仔细检查您的本地存储库。更新/拉取分支并将日志显示为图表:

git checkout master
git pull origin master
git checkout BitPankaj
git pull BitPankaj
git log --oneline --decorate --graph --all 
#Or you can use gitk --all if you installed git bash

为了在BitPankajmaster 之间创建拉取请求,您应该master 分支更改BitPankaj 分支

根据master 分支的最新版本(提交C)更改BitPankaj

git rebase master BitPankaj
git push -f origin BitPankaj

那么提交历史会是这样的:

A---B---…---C   master
             \
              D---…---E   BitPankaj

master 分支的旧版本(例如提交B)更改BitPankaj 分支:

git rebase <commit id for B> BitPankaj
git push -f origin BitPankaj

那么提交历史会是这样的:

A---B---…---C   master
     \
      D---…---E   BitPankaj

然后您可以创建拉取请求以将BitPankaj 合并到bitbucket 上的master 分支成功。

【讨论】:

【参考方案2】:

您应该能够使用 --allow-unrelated-histories 强制合并发生。

你应该可以像这样使用它:-

git pull origin branchname --allow-unrelated-histories

更多信息请查看:-

Git Merge Documentation

【讨论】:

我不想在与其他团队成员审查代码之前合并它们,所以为此我需要之前有拉取请求。有什么方法可以让我的比特桶帐户中不相关的历史记录?

以上是关于在 Bitbucket 中创建拉取请求:错误“不相关的分支”的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

使用通用 Webhook 参数检出 bitbucket 拉取请求的 GIT SCM 配置

使用 Bitbucket 进行 Sonarqube 拉取请求装饰

使用 aws codebuild 未收到有关 bitbucket 拉取请求的 Sonar 评论