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

git拆分仓库的更多相关文章

  1. git远程仓库

    git远程仓库: 目前我们使用到的 Git 命令都是在本地执行,如果你想通过 Git 分享你的代码或者与其他开发人员合作. 你就需要将数据放到一台其他开发人员能够连接的服务器上. 添加远程仓库: gi ...

  2. git 远程仓库 轻松创建

    很多时候,为了方面管理我们写的代码,我们采用git 远程仓库来进行管理和备份.防止代码被他人篡改或删除.那如何来进行创建远程仓库呢? 1.我们必须有一个远程服务器端,在这里可以把任意一台电脑作为服务器 ...

  3. git创建仓库

    创建仓库 git init: Git 使用 git init 命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以 git init 是使用 Git 的第一个命令. ...

  4. 最新搭建GIT服务器仓库

    新开了一个项目,现在需要将代码放在公司GIT服务器上面.所以这里需要了一些问题..记录一下.因为原来公司这边的服务器的git用户都是创建好的.这里没有创建.需要的可以看看:http://www.cnb ...

  5. Git服务器仓库的搭建和客户端使用方法

    环境说明: 1.fedora21  桌面系统  2.已经配置好yum仓库 一.安装git # yum install git 1.1 创建git用户 创建git账户并登录,直接指定用户目录到/home ...

  6. Git 建立仓库及常用命令速查表

    Git新建仓库两种模式: 一.项目在本地时,本地初始化仓库并提交至Coding.Net 新建一个空白目录并进入,执行如下流程 1.git init2.项目代码复制到当前目录3.git add *4.g ...

  7. git私有仓库与pycharm联合使用

    文章目录 1 创建git私有仓库和pycharm的使用 1.1 克隆私有仓库到本地 1.2 使用pycharm打开 1.3 添加.gitignore文件 1.4 并将其添加到仓库 1.5 提交和推送 ...

  8. Git submodule 仓库中包含另外的仓库(子仓库)

    Git submodule 仓库中包含另外的仓库(子仓库) 添加 submodule 在父仓库 git 目录下: git submodule add ssh://ip/[path]/xxx.git 注 ...

  9. Git远程仓库地址变更本地如何修改

    以项目test为例: 老地址:http://192.168.1.1:9797/john/test.git 新地址:http://git.xxx.xxx/john/test.git 远程仓库名称: or ...

随机推荐

  1. IDEA快速修复错误快捷键

    有的时候在IDEA中编写代码,会出现错误提示,比如需要处理异常 将光标移动到出错,也就是划红线的地方,行首会出现一个小灯泡,点击会出现图二,可以按照提示进行修复

  2. Type Erasure with Pokemon---swift的类型擦除

    我感觉这个是swift的设计缺陷. 类型擦除:解决泛型类型作为公用类型的问题 是抽象的公用机制的一种实现方式. 1)类型擦除并不能解决类型不一致的兼容问题,只能解决类似继承一致性的兼容问题. 2)擦除 ...

  3. elasticSearch查询(一)

    **整理成sql格式来看懂elastic** 1.多个字段多个and查询 sql格式:select * from product where title = 'xxxx' and pid = 12 l ...

  4. Elasticsearch PUT 插入数据

    { "error": { "root_cause": [ { "type": "illegal_argument_exceptio ...

  5. Microsoft.Office.Interop.Excel 读取 excel 中的 checkbox 和 radio

    using Excel = Microsoft.Office.Interop.Excel; Excel.Application excelapp = new Excel.Application(); ...

  6. ORACLE 求和(多列)

    SELECT SUM(列名),SUM(列名),SUM(列名),SUM(列名) FROM 表名

  7. sql基础语句50条

    curdate() 获取当前日期 年月日 curtime() 获取当前时间 时分秒 sysdate() 获取当前日期+时间 年月日 时分秒 */ order by bonus desc limit ( ...

  8. 设计模式之(十)装饰模式(DECORATOR)

    在购买了一个房子后,如果是毛坯房,肯定不合适直接入住的.需要对它进行装修:地面找平贴地砖.批墙贴墙纸.吊顶装订以及买需要的家具,住进去以后也可能根据需要再添加或者去掉一些家具或者修改一些东西.所以的这 ...

  9. SPFA板子

    #pragma GCC optimize(3) #include <bits/stdc++.h> using namespace std; ; vector<pair<int, ...

  10. Kail Linux xface 2019.2

    概述: -OS: Kali-Rolling (2019.2) -DE: XFCE -WM: Arc-Dark -WM Theme: Arc-Dark -Icons: Korla -Term Font: ...