Bitbucket Pull Request,其中源回购是forkee,目标回购是fork

时间:2018-10-24 09:55:33

标签: git bitbucket

几个月前,我分叉了一个名为alpha的存储库,并命名为fork beta

我真正想实现的是保留了提交历史记录的回购副本和指向其来源的链接。对beta所做的更改永远不会被合并回alpha中; alpha的开发已经结束。

命运的转折,我需要测试一个功能(新的图像传感器,这是一个固件项目),并且简而言之,无法使用{{1}测试这些硬件更改}回购(微处理器已从beta更改为alpha)。因此,我分支到beta来为新功能编写代码。

现在,我想将在alpha(分支的)中的功能分支上所做的更改拉入alpha(分支)的主分支中。我知道这与打算使用“拉取请求”的方式相反。在Bitbucket UI中,在beta中创建拉取请求时,无法将beta指定为目标存储库。但是,正如预期的那样,我可以在alpha的目的地beta中创建拉取请求。

我真的不想在两个存储库的本地副本上复制和粘贴代码,因为我会丢失alpha中功能分支的提交历史记录。是否有一种方法(使用拉取请求或其他方式)将代码从alpha拉入alpha并执行合并提交?

2 个答案:

答案 0 :(得分:0)

您的beta仓库是fork,而alpha-是upstream仓库。因此,如果您已经从alpha分支(意味着-创建了分支,而不是fork-是吗?),那么您需要将更改合并到alpha(通过拉请求或简单合并);然后同步您的fork beta和上游存储库(alpha)。

检查此链接-https://confluence.atlassian.com/bitbucketserver/keeping-forks-synchronized-776639961.html-描述了一些手动策略。

最后,这意味着您需要将alpha合并到beta中-这是通过fork工作时的常规例程。因为与此同时,一个人在自己的分支上处理功能,所以其他开发人员会实现功能并将请求拉到上游存储库中,然后所有人都可以将其同步。

答案 1 :(得分:0)

好的,这是我的做法:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css" rel="stylesheet" /> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script> <a class="waves-effect waves-light btn" onClick="expandAll();" id="expand"><i class="material-icons left">fullscreen</i>Expand All</a> <a class="waves-effect waves-light btn" onClick="collapseAll();" id="collapse"><i class="material-icons left">fullscreen_exit</i>Collapse All</a> <ul class="collapsible"> <li> <div class="collapsible-header"> First <i class="material-icons rotate right">expand_more</i></div> <div class="collapsible-body"><span>Lorem ipsum dolor sit amet.</span></div> </li> <li> <div class="collapsible-header">Second <i class="material-icons rotate right">expand_more</i> </div> <div class="collapsible-body"><span>Lorem ipsum dolor sit amet.</span></div> </li> <li> <div class="collapsible-header">Third <i class="material-icons rotate right">expand_more</i></div> <div class="collapsible-body"><span>Lorem ipsum dolor sit amet.</span></div> </li> </ul>

现在,我们在本地git存储库已知的分支中看到cd beta git remote add my_new_remote https://me@bitbucket.org/.../alpha.git git fetch my_new_remote branch_I_want git branch -a

接下来,我们需要创建一个本地分支以跟踪此新添加的远程分支:

remotes/my_new_remote/branch_I_want

现在,我在git checkout -b my_local_branch my_new_remote/branch_I_want的本地副本中从branch_I_want的远程获取了alpha的副本。因此,从这里我可以将beta合并到my_local_branch中并推送到master中的origin_mater

合并过程如下:

beta

然后修复合并冲突和git checkout master git merge my_local_branch

git commit完成,然后检查bitbucket:git pushbranch_I_want的所有提交历史现在都在alpha中,并且合并显示得很好!