Git将所有提交从一个回购协议转移到另一个回购协议

Git将所有提交从一个回购协议转移到另一个回购协议,git,Git,在工作中,我们有一个GIT存储库,我们称之为OriginalRepo,包含许多文件夹。决定向另一个团队提供一个新的存储库(我们称之为NewRepo),其中包含来自OriginalRepo的一些文件夹。两个存储库中的文件夹结构相同,唯一的区别是NewRepo有一个子集文件夹。另一个团队通过几个分支完成了200多个提交 我们想要的是将所有分支和所有提交从NewRepo带到OriginalRepo,再到它们从中分离出来的提交。 我希望所有在NewRepo中创建的分支都在OriginalRepo中调用

在工作中,我们有一个GIT存储库,我们称之为OriginalRepo,包含许多文件夹。决定向另一个团队提供一个新的存储库(我们称之为NewRepo),其中包含来自OriginalRepo的一些文件夹。两个存储库中的文件夹结构相同,唯一的区别是NewRepo有一个子集文件夹。另一个团队通过几个分支完成了200多个提交

我们想要的是将所有分支和所有提交从NewRepo带到OriginalRepo,再到它们从中分离出来的提交。 我希望所有在NewRepo中创建的分支都在OriginalRepo中调用

“NewRepo_”+NewRepoBranchName


我希望所有提交都有相同的作者和日期。有可能创建一个这样做的脚本吗?

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

我认为这应该足够了


如果要创建与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
#/bin/bash
对于以美元表示的远程分支(git BRANCH-r | grep-o“[^]*”| grep“^NewRepo”)#从NewRepo循环通过所有远程分支
做

BRANCH=$(echo$REMOTE|u BRANCH | grep-o-P)(?Alderath,非常感谢提供的解决方案。事实上,我想拥有所有提交的分支。我发现cherry pick非常好。git cherry pick sha1..shaN
git checkout NewRepo/NewRepoBranchName
#/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