几个月前,我分叉了一个名为alpha
的存储库,并命名为fork beta
。
我真正想实现的是保留了提交历史记录的回购副本和指向其来源的链接。对beta
所做的更改永远不会被合并回alpha
中; alpha
的开发已经结束。
命运的转折,我需要测试一个功能(新的图像传感器,这是一个固件项目),并且简而言之,无法使用{{1}测试这些硬件更改}回购(微处理器已从beta
更改为alpha
)。因此,我分支到beta
来为新功能编写代码。
现在,我想将在alpha
(分支的)中的功能分支上所做的更改拉入alpha
(分支)的主分支中。我知道这与打算使用“拉取请求”的方式相反。在Bitbucket UI中,在beta
中创建拉取请求时,无法将beta
指定为目标存储库。但是,正如预期的那样,我可以在alpha
的目的地beta
中创建拉取请求。
我真的不想在两个存储库的本地副本上复制和粘贴代码,因为我会丢失alpha
中功能分支的提交历史记录。是否有一种方法(使用拉取请求或其他方式)将代码从alpha
拉入alpha
并执行合并提交?
答案 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 push
中branch_I_want
的所有提交历史现在都在alpha
中,并且合并显示得很好!