Git将所有提交从一个repo转移到另一个repo

时间:2015-06-02 00:42:20

标签: git

在工作中,我们有一个GIT存储库,让我们称它为OriginalRepo,包含许多文件夹。决定向另一个团队提供一个新的存储库(让我们调用NewRepo),其中有一些来自OriginalRepo的文件夹。两个存储库中的文件夹结构相同,唯一的区别是NewRepo有一个文件夹子集。另一个团队已经在一些分支机构中进行了200多次提交。

我们想要的是将来自NewRepo的所有提交的所有分支带入OriginalRepo到它们发散的提交。 我想在NewRepo中创建的所有分支都在OriginalRepo中调用

" NewRepo _" + NewRepoBranchName

所有提交我想拥有相同的作者和日期。是否可以创建一个脚本呢?

1 个答案:

答案 0 :(得分:0)

我想最简单的方法是做(在OriginalRepo中):

git remote add NewRepo <url-to-new-repo>
git fetch NewRepo

现在所有远程引用都将存储在.git/refs/remotes/NewRepo中。 换句话说,你可以这样做:

git checkout NewRepo/NewRepoBranchName

我认为这应该足够了。

如果要在NewRepo中创建与每个远程分支对应的本地分支,可以像这样使用for循环:

#/bin/bash
for REMOTE_BRANCH in $(git branch -r | grep -o "[^ ]*" | grep "^NewRepo")  #Loop through all remote branches from NewRepo
do
    BRANCH=$(echo $REMOTE_BRANCH | grep -o -P "(?<=^NewRepo/).*") #Remove the NewRepo/ prefix
    LOCAL_BRANCH=NewRepo_$BRANCH #Add NewRep_ prefix
    git branch $LOCAL_BRANCH $REMOTE_BRANCH #Create local branch corresponding to the remote branch
done