• git拆分仓库


    1.git filter-branch拆分当前分支

    • 修改仓库目录,改成拆分后的结构
    • 创建一个当前分支的拷贝分支
    • git filter-branch -f --tag-name-filter cat --prune-empty --subdirectory-filter publish HEAD 运行命令,把publish目录下的内容和历史记录拆分到当前目录,删除所有其他的文件和历史记录,HEAD是当前分支
    • 创建新的远程仓库
    • 设置当前的remote为新创建的仓库 git remote set-url origin git@192.168.1.1:test.git
    • 把当前分支推送到远程的master git push -u origin test:master
    • 切换到原来的分支
    • 设置回来原来的远程仓库
    • 删除测试分支

    2.git filter-branch拆分仓库所有分支

    参考 https://printempw.github.io/splitting-a-subfolder-out-into-a-new-git-repository/

    git filter-branch --tag-name-filter cat --prune-empty --subdirectory-filter <name-of-folder> -- --all

    这条命令同样会过滤所有历史提交,只保留所有对指定子目录有影响的提交,并将该子目录设为该仓库的根目录。
    这里说明各下个参数的作用:
        --tag-name-filter 该参数控制我们要如何处理旧的 tag,cat 即表示原样输出;
        --prune-empty 删除空的(对子目录没有影响的)提交;
        --subdirectory-filter 指定子目录路径;
        -- --all 该参数必须跟在 -- 后面,表示对所有分支进行操作。如果你只想保存当前分支,也可以不添加此参数

    3.git subtree拆分当前分支

    拆分仓库也可以使用subtree更方便

    git subtree split -P <name-of-folder> -b <name-of-new-branch>

    subtree是把一个分支拆分到另一个分支,这样的话操作起来更方便,不会改写原来分支的内容

    总结

    git filter-branch操作的时候会修改当前分支,也就是在当前分支的基础上做了一个切分,然后提交创建了一个修改。所以为了避免污染原来的分支,建议一个分支一个分支的操作,并且操作前,最好是切一个临时分支。

  • 相关阅读:
    Linux 安装Python3.7
    Linux 修改默认yum源为阿里云
    Linux 安装和配置ActiveMQ Artemis
    Linux 查看内存空间、磁盘空间、进程等信息
    Linux 查询和开启端口
    伤害 等待互斥锁
    深入理解Linux内核之脏页跟踪
    基础——SPI与QSPI的异同,QSPI的具体协议是什么,QSPI有什么用
    浅谈显示器色域:从sRGB到广色域
    Linux SPI 驱动
  • 原文地址:https://www.cnblogs.com/studywithallofyou/p/11771730.html
Copyright © 2020-2023  润新知