将多个 github 存储库迁移到一个存储库并仍然保留提交历史

migrate several github repos to one repo and still preserve the commit history

我写过一些从一些电子商务网站抓取商品数据的项目。我组织了
它们分成几个 github 存储库,这意味着爬取沃尔玛的项目存储在一个名为 walmart 的 github 存储库中。所以我现在有几个像沃尔玛、百思买这样的回购协议。我想将这些 repos 迁移到另一个 repo 并仍然保留提交历史记录。谷歌后,我找不到有用的方法来尝试。有没有办法做到这一点?

假设你想要一个看起来像

的回购协议
/rootOfTheRepo
  .git
  /walmart
  /bestbuy

你可以做的是:

  • 通过将文件移动到最终回购中应有的位置来准备子回购
  • 进入其中一个仓库并从另一个仓库获取提交
  • 合并两个master分支

在 bash 中,从您的本地克隆来看,它看起来像:

cd /path/to/walmartRepo
mkdir walmart
git mv file1 file2 dir1 dir2 walmart
git commit -am "Moved files"

cd /path/to/bestbuyRepo
mkdir bestbuy
git mv file1 file2 dir1 dir2 bestbuy
git commit -am "Moved files"

git remote add walmart /path/to/walmartRepo
git fetch --all
git merge walmart/master

执行此操作后,您的 besbuy 存储库已变成一个新的全局存储库。您只需要在 github 上创建一个相应的 repo,然后将这个新提交推送到那里。