将多个 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,然后将这个新提交推送到那里。
我写过一些从一些电子商务网站抓取商品数据的项目。我组织了
它们分成几个 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,然后将这个新提交推送到那里。