在 Bitbucket 中创建拉取请求:错误 "Unrelated branches"

Creating a pull request in Bitucket: error "Unrelated branches"

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

git checkout -b BitPankaj

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

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

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

和分支机构:

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

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

The following error(s) occurred saving this pull request: Unrelated branches

我们正在学习 git,帮我解决这个问题。

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

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

git pull origin branchname --allow-unrelated-histories

有关更多信息,请查看:-

Git Merge Documentation

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

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

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

您可以仔细检查您的本地存储库。 Update/pull 分支并将日志显示为图形:

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 分支 [=55= 的 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 分支。