当前位置:   article > 正文

Git | 如何在保留历史记录的情况下,把代码从一个仓库搬运到另一个仓库?_git迁移仓库保持记录

git迁移仓库保持记录

算是一篇踩坑记录,或者一篇爬坑教程吧

(之所以称之为坑,是因为大多数情况下,直接复制代码就完事了

需求

现有两个Git仓库,A和B,A是项目的主要仓库,为了方便管理,现在要把A中功能较为独立的一块代码搬运到B,同时,希望能够保留这部分代码的历史记录。

解决思路

最简单的情况

先不考虑其他因素,只考虑“把A仓库的代码和历史记录一起搬运到B仓库”这个需求,很快就能想到一个解决方案:

  1. # Step 1: 克隆一份A的本地副本,以下操作均在该仓库A的本地副本内执行
  2. git clone <repo A 的地址>
  3. # Step 2: 将仓库B设置为该git本地仓库的一个远端
  4. git remote add repoB <repo B 的地址>
  5. # Step 3: 把不想搬过去的代码都删掉,并commit
  6. # Step 4: 执行git push,把所有仓库A的历史记录推到仓库B的code-from-A分支
  7. git push repoB --set-upstream HEAD:code-from-A

如果你要处理的只是一个内容简单的个人项目,那么以上操作就足以满足需求了。

然而,现实总是残酷的,实际的应用场景不会这么简单,我们还要考虑以下几个问题:

  1. 对于仓库B来说,它只关心要搬运的一小块代码,但是上面的做法却推了整个仓库A的历史记录上去,存在数据冗余

  1. 仓库B中,code-from-A分支与master分支不同基(not sharing the same base),因此,如果要把code-from-A merge到master,会报unrelated history的错。如果是个人项目的仓库还好,我们还可以通过配置allow unrelated history绕开这个问题,但在管理比较严格的企业里,这是不被允许的。这就迫使我们对code-from-A进行rebase

  1. 如果仓库B并不是空白仓库,

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/394392
推荐阅读
相关标签
  

闽ICP备14008679号