zoukankan      html  css  js  c++  java
  • 带着历史提交记录迁移git仓库

    1. git push --mirror

    --mirror模式会把本地的分支都克隆

    // 先用--bare克隆裸仓库
    git clone git@gitee.com:zhangamie/testApp.git --bare
    // 进入testApp.git,这样就可以把所有分支都克隆到新仓库了
    git push --mirror git@gitee.com:zhangamie/testApp2.git

     或

    // 普通模式克隆仓库
    git clone git@gitee.com:zhangamie/testApp.git
    // push所有本地已存在的分支(不管是否有对应的远程分支)
    git push --mirror git@gitee.com:zhangamie/testApp2.git

    2. 加远程源

    git remote add origin2 git@gitee.com:zhangamie/testApp2.git
    git push origin2
    git checkout dev
    git push origin2
    ...

    这种方式的缺点是只能一次push一个分支,如果要克隆所有分支,需要checkout到各个分支然后push

    3. git subtree

    推荐阅读:git subtree操作

    上面2种都是整个仓库的迁移,而git subtree可以把某个子目录拆出去

    例如想把仓库的目录src/apps/testApp拆出去一个仓库,并且带上这个目录的所有提交历史记录

    首先我们得创建一个空的仓库(记得别带任何初始化文件,例如README.md)

    例如:git@github.com:xxxx/testApp.git master

    然后到主仓库执行这段git命令,就可以到testApp看到代码啦

    git subtree push --prefix=src/apps/testApp git@github.com:xxxx/testApp.git master
  • 相关阅读:
    C#中异步和多线程的区别
    猫 老鼠 人的编程题
    C#中数组、ArrayList和List三者的区别
    经典.net面试题目
    sql有几种删除表数据的方式
    内存池的实现
    A*算法为什么是最优的
    传教士与野人问题
    d3d导致cairo不正常
    c++中的signal机制
  • 原文地址:https://www.cnblogs.com/amiezhang/p/11120276.html
Copyright © 2011-2022 走看看