如何将文件夹从一个存储库复制/移动/克隆到另一个存储库的根目录

时间:2019-01-09 11:18:46

标签: git gitlab

我想将存储库下的文件夹移动到另一个存储库的根目录下,如下所示

  

repo1

     

->文件夹0(git @ git ... net:/folder0.git)

     
    

->文件夹1

         

->文件夹2

         

-> folder3

  

  

repo2(与repo1相同的gitlab)

     

->文件夹1

     

->文件夹2

     

-> folder3

即所有文件夹(1,2,3)应该位于repo2的根目录中,以便所有文件夹(1,2,3)都可以直接放在(git @ git ... net:)

我尝试过的是

  1. 是逐个文件夹复制的文件夹,会丢失历史记录

  2. 此处有一些链接How to move a folder from one repo to another repo?

我需要的是-复制子文件夹下的所有文件夹并将其移至根目录

2 个答案:

答案 0 :(得分:0)

如果将其推送到repo1中,则可以从repo2中挑选git。

在repo2的.git/config中的

添加:

[remote "copyFrom"]
    url = git@github.com:{repo1Url}
    fetch = +refs/heads/*:refs/remotes/copyFrom/*

添加“ copyFrom”后,repo2将拥有一个新的远程站点,因此您可以从repo1中获取并樱桃选择提交(就像origin一样)

git fetch copyFrom 

git cherry-pick -xn {commit-from-repo1}

请注意,如果repo1中的代码与repo2完全不同,并且文件夹的提交在代码中包含其他更改,则此解决方案可能会很杂乱

答案 1 :(得分:0)

我在下面的链接中找到了更简单的方法

https://help.github.com/enterprise/2.15/user/articles/splitting-a-subfolder-out-into-a-new-repository/

这对我有用。我在上述步骤中遇到的问题是

  1. 在此命令git filter-branch --prune-empty --subdirectory-filter FOLDER-NAME BRANCH-NAMEBRANCH-NAME主控

  2. 如果由于保护问题提交时最后一步失败,请遵循-https://docs.gitlab.com/ee/user/project/protected_branches.html