• 将仓库下某个模块复制到新仓库并保留提交记录(非子库)


    在Git中,有时候我们需要将一个仓库中的某个模块复制到另一个仓库中,并且还需要保留提交记录。这个时候我们可以使用Git subtree命令来实现。
    例如:将本地某个仓库中的design-pattern文件夹下的所有文件拿出来作为一个新仓库

    以下是具体操作步骤:

    1. 进入旧仓库中,使用以下命令将需要复制的模块分离出来,创建一个新分支:
    git subtree split --prefix=design-pattern -b dp
    

    这个命令会在当前仓库中创建一个名为dp的新分支,并将design-pattern模块的提交记录复制到这个分支中。

    1. 切换到dp分支,使用以下命令添加一个新的远程仓库:
    git remote add dp_orign git@gitee.com:forxiaoming/design-pattern.git
    

    这个命令会将一个名为dp_orign的远程仓库添加到当前仓库中。

    1. 将dp分支推送到新的远程仓库中:
    git push dp_orign dp
    

    这个命令会将dp分支推送到dp_orign远程仓库中。

    接下来只需要在新仓库中将 dp分支合并到主分支即可

    1. 进入新仓库中,使用以下命令拉取新的提交记录:
    git pull
    #From gitee.com:forxiaoming/design-pattern
    # * [new branch]      dp         -> origin/dp
    
    

    这个命令会拉取dp分支中的提交记录到新仓库中。

    1. 将本地分支与远程分支同步:
    git fetch origin
    

    这个命令会将远程分支的最新提交记录拉取到本地。

    1. 切换到dp分支:
    git branch
    # * master
    
    git branch  -r
    #  origin/HEAD -> origin/master
    #  origin/dp
    #  origin/master
    
    git checkout dp
    
    1. 这时可以看到 dp 分支下有之前旧仓库推送过来的文件
    ls
    #README.md
    # ...
    
    1. 切换回主分支:
    git checkout master
    
    1. 将dp分支合并到主分支中:
    git merge --allow-unrelated-histories dp
    

    这个命令会将dp分支的提交记录合并到主分支中。

    在使用 git merge 命令合并两个分支时,如果两个分支的提交记录没有共同的祖先,即它们的提交历史没有交集,那么 Git 会认为这两个分支是不相关的,不能直接合并。这时候会出现以下错误提示:

    fatal: refusing to merge unrelated histories
    

    为了在这种情况下也能够合并分支,需要使用 --allow-unrelated-histories 参数。这个参数的作用是允许合并两个没有共同祖先的分支,即使 Git 认为它们是不相关的。

    1. 推送到远程仓库:
    git push
    
    1. 删除本地dp分支:
    git branch -d dp
    
    1. 删除远程dp分支:
    git push origin --delete dp
    

    这样就完成了将一个仓库中的某个模块复制到另一个仓库中,并且保留了提交记录的操作。

  • 相关阅读:
    一次XGBoost性能优化-超线程影响运算速度
    月薪过二万的Java面试
    JAVA单元测试用例——待续
    【C++】AVL树的4中旋转调整
    14.webpack ----Vue源码的打包
    深度剖析Android Binder IPC机制
    linux内核驱动之定时器
    [Linux]套接字通信
    Android EditText 实现强制性弹出只能输入英文的键盘
    Django学习(1)Model
  • 原文地址:https://www.cnblogs.com/52liming/p/17390829.html