把 git 仓库的子目录独立成新仓库

比特筑梦说
• 阅读 6596

项目开发中偶尔会碰到这种需求:需要把仓库中的一个子目录独立出来,成为一个全新的独立仓库。但又希望这个新仓库能保留原来所有的提交记录,方面以后查看。

如下面的目录结构所示,要将项目仓库中 component_a 目录的代码抽取出来,独立成新仓库。

- project_root
|- src
|- components
    |- component_a
    |- component_b

根据子目录新建分支

component_a 目录的提交信息抽出为新的 branch

cd {path/to/project_root}
git subtree split -P {component_a 的相对路径} -b {新分支名称}

2、新建 component_a 仓库,并从源仓库的新分支中拉内容

mkdir ~/component_a
cd ~/component_a
git init
git pull {path/to/project_root} {新分支名称}
点赞
收藏
评论区
推荐文章
菜园前端 菜园前端
2年前
手把手教你操作Git
原文链接:项目初始化流程1.查看git仓库地址在gitee上面操作,找到自己创建的项目仓库。2.克隆项目填写自己的git仓库地址gitclonehttps://gitee.com/noxussj/courseeproject3.gitcmdPSC:\git
Wesley13 Wesley13
4年前
GIT命令大全
Git命令大全Git最小配置某账号下所有的Git仓库都有效gitconfigglobaluser.name'您的名称'gitconfigglobaluser.email'您的Email'只对当前Git仓库有效gitconf
Stella981 Stella981
4年前
Git 手册
gitinit                                                 初始化本地git仓库(创建新仓库)gitconfigglobaluser.name"xxx"                      配置用户名gitconfigglobaluser.emai
Stella981 Stella981
4年前
Jenkins + Gogs 搭建DevOps环境
Gogs:1\.安装过程中,对外访问URL可配置公网IP地址:端口号,因为这个选项会影响未来git仓库的地址。2\.新建好仓库后,如果想实现提交代码后自动触发编译,则需要配置对应代码仓库的Webhook:仓库设置管理Web钩子AddanewWebhookGogs推送地址:http://Jenkins服务器地址/gogswe
Stella981 Stella981
4年前
Github远程仓库提交代码步骤
1.克隆远程仓库1)当没有设置默认目录时gitclone仓库地址本地存放目录//没有目录的情况2)当设置了本地存放目录时先打开路径,命令:cdpath1.初始化git创建git仓库:gitinit查看文件目录: gitstatus
Stella981 Stella981
4年前
Git学习
已有项目添加到Git操作流程:1.在一个目录下执行gitinit,会将当前目录创建为git仓库gitinit2.执行gitadd.把当前目录下所有文件添加到仓库gitadd.3.把添加的文件提交到本地仓库gitcommitm'Firstcommit'4.添加remote及验证remote。
Stella981 Stella981
4年前
Git 代码迁移
1、将项目projectA从仓库repoA迁移至repoBgitclonebarerepoAcdprojectAgitpushmirrorrepoB2、将原仓库repoA中某个项目project中的某分支branchX迁移至新
Stella981 Stella981
4年前
SVN仓库转Git仓库(针对大仓库)
关于把SVN仓库转为Git仓库的方式有不少,最常见的比如有git自带的gitsvnclone命令,或者SubGit(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsubgit.com%2F),还有许多其它的。在使用过程中,发现无论是gitsvn还是SubGit,效率都
Stella981 Stella981
4年前
IDEA上传项目到gitee被拒绝,解决方式
用IDEA将项目商场到gitee出现下面的提示:Pushtoorigin/masterwasrejected出现错误的原因是因为远程仓库中已经有了一个文件,我们再推新的项目文件的时候,就会出现冲突,这个仓库已经有主人了,新来的不让进。解决方式:我们把仓库里的文件先拉到我的项目里边,然后把我的项目原文件一起推上去!(http
Stella981 Stella981
4年前
Spring+SpringMVC+MyBatis+easyUI整合进阶篇(二)RESTful API实战笔记(接口设计及Java后端实现)
写在前面的话原计划这部分代码的更新也是上传到ssmdemo仓库中,因为如下原因并没有这么做:有些使用了该项目的朋友建议重新创建一个仓库,因为原来仓库中的项目太多,结构多少有些乱糟糟的。而且这次的代码改动较大,与原来的目录结构及代码风格相比都有很大的差别。同时也考虑到不同的人所处的学习阶段
小万哥 小万哥
2年前
Git 分支管理:优化版本控制与应急处理的关键策略
使用Git分支:轻松管理不同版本和应对紧急情况的最佳实践使用Git分支在Git中,分支是主仓库的新/独立版本。假设你有一个大型项目,需要对其进行设计更新。没有使用Git时:复制所有相关文件以避免影响实时版本开始进行设计工作,并发现代码依赖于其他文件中的代码