繁体   English   中英

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

[英]Git bringing all commits from one repo to another

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

我们想要的是将所有具有所有提交的分支从NewRepo引入到OriginalRepo中,使其脱离分支。 我希望在NewRepo中创建的所有分支都可以在OriginalRepo中调用

“ NewRepo_” + NewRepoBranchName

我希望所有提交都具有相同的作者和日期。 是否可以创建一个脚本来做到这一点?

我想最简单的方法是(在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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM