zoukankan      html  css  js  c++  java
  • 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操作的时候会修改当前分支,也就是在当前分支的基础上做了一个切分,然后提交创建了一个修改。所以为了避免污染原来的分支,建议一个分支一个分支的操作,并且操作前,最好是切一个临时分支。

  • 相关阅读:
    kaggle—first play—Titanic
    数据挖掘——时间序列分析
    数据挖掘——关联算法
    数据挖掘——聚类分析总结
    数据挖掘——特征工程
    数据挖掘——基于sklearn包的分类算法小结
    数据挖掘——分类算法——贝叶斯分类、决策树
    数据挖掘——分类算法——KNN
    数据挖掘——回归分析2——简单神经网络的python实现
    【springBoot】小记
  • 原文地址:https://www.cnblogs.com/studywithallofyou/p/11771730.html
Copyright © 2011-2022 走看看