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操作的时候会修改当前分支,也就是在当前分支的基础上做了一个切分,然后提交创建了一个修改。所以为了避免污染原来的分支,建议一个分支一个分支的操作,并且操作前,最好是切一个临时分支。
git拆分仓库的更多相关文章
- git远程仓库
git远程仓库: 目前我们使用到的 Git 命令都是在本地执行,如果你想通过 Git 分享你的代码或者与其他开发人员合作. 你就需要将数据放到一台其他开发人员能够连接的服务器上. 添加远程仓库: gi ...
- git 远程仓库 轻松创建
很多时候,为了方面管理我们写的代码,我们采用git 远程仓库来进行管理和备份.防止代码被他人篡改或删除.那如何来进行创建远程仓库呢? 1.我们必须有一个远程服务器端,在这里可以把任意一台电脑作为服务器 ...
- git创建仓库
创建仓库 git init: Git 使用 git init 命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以 git init 是使用 Git 的第一个命令. ...
- 最新搭建GIT服务器仓库
新开了一个项目,现在需要将代码放在公司GIT服务器上面.所以这里需要了一些问题..记录一下.因为原来公司这边的服务器的git用户都是创建好的.这里没有创建.需要的可以看看:http://www.cnb ...
- Git服务器仓库的搭建和客户端使用方法
环境说明: 1.fedora21 桌面系统 2.已经配置好yum仓库 一.安装git # yum install git 1.1 创建git用户 创建git账户并登录,直接指定用户目录到/home ...
- Git 建立仓库及常用命令速查表
Git新建仓库两种模式: 一.项目在本地时,本地初始化仓库并提交至Coding.Net 新建一个空白目录并进入,执行如下流程 1.git init2.项目代码复制到当前目录3.git add *4.g ...
- git私有仓库与pycharm联合使用
文章目录 1 创建git私有仓库和pycharm的使用 1.1 克隆私有仓库到本地 1.2 使用pycharm打开 1.3 添加.gitignore文件 1.4 并将其添加到仓库 1.5 提交和推送 ...
- Git submodule 仓库中包含另外的仓库(子仓库)
Git submodule 仓库中包含另外的仓库(子仓库) 添加 submodule 在父仓库 git 目录下: git submodule add ssh://ip/[path]/xxx.git 注 ...
- Git远程仓库地址变更本地如何修改
以项目test为例: 老地址:http://192.168.1.1:9797/john/test.git 新地址:http://git.xxx.xxx/john/test.git 远程仓库名称: or ...
随机推荐
- 【java】【guava】Google Guava的splitter用法
Google Guava的splitter,分割字符串的用法 package com.sxd.swapping.guava; import com.google.common.base.CharMat ...
- C#之初识异步
什么是异步 举个例子:小明的妈妈让小明烧一壶水,水烧开后要倒进水壶里,同时还需要把家里打扫一下. 小明的操作流程一:烧水---->等待至水烧开----->水倒进水壶里--------> ...
- PIE属性表多字段的文本绘制
最近研究了PIE SDK文本元素的绘制相关内容,因为在我们的开发中,希望可以做到在打开一个Shp文件后,读取到属性表的所有字段,然后可以选择一些需要的字段,将这些字段的所有要素值的文本,绘制到shp图 ...
- python之三方库(冷门+热门)
AES加密库 pycryptodome
- 【spring】spring aop
Aspect-Oriented Programming (AOP) 一.官方介绍 通过提供另一种考虑程序结构的方式,面向方面编程(AOP)补充了面向对象编程(OOP).OOP中模块化的关键单元是类,而 ...
- JavaScript调用百度地图
在网站开发过程中,经常会调用到地图,百度地图提供Web开发.Android开发.iOS开发API及SDK,百度地图JavaScript API可帮助您在网站中构建功能丰富.交互性强的地图应用,本篇博客 ...
- 简单记录(css换行带点与不带点)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- AI 的架构与核心
AI 的架构 人工智能的架构分为三层:应用层.技术层和基础层. 应用层聚焦在人工智能和各行业各领域的结合.技术层是算法.模型和技术开发.基础层则是计算能力和数据资源. 数据收集:获取什么类型的数据,数 ...
- SqlServer数据库优化之添加主键和自增长
今天需要给有500万条数据的表添加主键和自增长列,其中最大的难度在于如何UPDATE这500万多条数据,开始吧! 1.先给表添加一个字段叫ID,并允许空 2.查询表,我想到了使用其中的时间列排序来创建 ...
- windows 如何cmd启动redis
运行cmd 然后到redis路径 运行命令: redis-server redis.windows.conf