算是一篇踩坑记录,或者一篇爬坑教程吧
(之所以称之为坑,是因为大多数情况下,直接复制代码就完事了
需求
现有两个Git仓库,A和B,A是项目的主要仓库,为了方便管理,现在要把A中功能较为独立的一块代码搬运到B,同时,希望能够保留这部分代码的历史记录。
解决思路
最简单的情况
先不考虑其他因素,只考虑“把A仓库的代码和历史记录一起搬运到B仓库”这个需求,很快就能想到一个解决方案:
# Step 1: 克隆一份A的本地副本,以下操作均在该仓库A的本地副本内执行
git clone <repo A 的地址>
# Step 2: 将仓库B设置为该git本地仓库的一个远端
git remote add repoB <repo B 的地址>
# Step 3: 把不想搬过去的代码都删掉,并commit
# Step 4: 执行git push,把所有仓库A的历史记录推到仓库B的code-from-A分支
git push repoB --set-upstream HEAD:code-from-A
如果你要处理的只是一个内容简单的个人项目,那么以上操作就足以满足需求了。
然而,现实总是残酷的,实际的应用场景不会这么简单,我们还要考虑以下几个问题:
对于仓库B来说,它只关心要搬运的一小块代码,但是上面的做法却推了整个仓库A的历史记录上去,存在数据冗余。
仓库B中,code-from-A分支与master分支不同基(not sharing the same base),因此,如果要把code-from-A merge到master,会报unrelated history的错。如果是个人项目的仓库还好,我们还可以通过配置allow unrelated history绕开这个问题,但在管理比较严格的企业里,这是不被允许的。这就迫使我们对code-from-A进行rebase。文章来源:https://www.toymoban.com/news/detail-666061.html
如果仓库B并不是空白仓库,文章来源地址https://www.toymoban.com/news/detail-666061.html
到了这里,关于Git | 如何在保留历史记录的情况下,把代码从一个仓库搬运到另一个仓库?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!