美文网首页
使用git-filter-repo将git子目录拆分为多个git

使用git-filter-repo将git子目录拆分为多个git

作者: fzhyzamt | 来源:发表于2021-11-10 14:55 被阅读0次

原项目结构

git@project
- module-a
  - src
- module-b
  - src
- module-common

新git项目结构

git@module-a
- src
git@module-b
- src
git@module-common

推荐使用git-filter-repo,而不是git自带的filter-branch。如果你使用的是较新的git版本,那么你执行filter-branch时可以看到下面的提示。

WARNING: git-filter-branch has a glut of gotchas generating mangled history
         rewrites.  Hit Ctrl-C before proceeding to abort, then use an
         alternative filtering tool such as 'git filter-repo'
         (https://github.com/newren/git-filter-repo/) instead.  See the
         filter-branch manual page for more details; to squelch this warning,
         set FILTER_BRANCH_SQUELCH_WARNING=1.

安装git-filter-repo

git-filter-repo需要你安装python3.5及以上版本,并且gi版本最好大于2.24.0

github上的依赖说明

首先从github上下载图中指示的文件,然后在cmd控制台执行git --exec-path查看git路径,将下载的文件放入即可。比如我这里就是将git-filter-repo文件放入C:/Program Files/Git/mingw64/libexec/git-core文件夹下。你可以直接访问这个链接,打开后按ctrl+s保存为文件即可。

github下载
查看执行文件夹

另外,如果你安装python时,设置的环境变量没有python3,只有python,那么需要修改一下git-filter-repo文件,使用记事本编辑器打开,将第一行的python3单词修改为python。否则执行git filter-repo会报错。

#!/usr/bin/env python3
修改为
#!/usr/bin/env python
未修改时的报错信息
修改后正常

执行

只要执行以下代码即可。建议在一个新目录执行这些操作,防止意外的干扰原项目。
filter-repo命令中的--subdirectory-filter意思就是将moduleA这个文件夹作为新的根路径。请自行改为需要的文件夹名称。

git clone git@example.git
cd example
git filter-repo --subdirectory-filter moduleA/

参考

相关文章

  • 使用git-filter-repo将git子目录拆分为多个git

    原项目结构 新git项目结构 推荐使用git-filter-repo,而不是git自带的filter-branch...

  • 2018-08-23

    关于 git 以下命令使用方法 1,git init 该命令将创建一个名为 .git的子目录,这个子目录含有你初始...

  • git submodule

    Git子模块允许你将一个Git仓库作为另一个仓库的子目录。 git submodule add

  • Git命令

    Git命令 初始化仓库 该命令将创建一个名为 .git 的子目录,这个子目录含有你初始化的 Git 仓库中所有的必...

  • Mac 上配置多个git账号

    参考 1、mac 下使用多个 git 账户配置2、Mac多个Git账户配置3、如何在一台电脑上使用多个git帐号 ...

  • 使用 git-filter-repo 重写git记录

    最近在做项目的迁移,用到了git-filter-repo重写git记录。以下是详细的操作步骤,希望可以帮助到大家。...

  • Git入门 之常用的命令

    创建新版本库 $ git init #初始化本地版本库该命令将创建一个名为 .git 的子目录,这个子目录含有你初...

  • Git 分支

    分支理解当使用 git commit 进行提交操作时,Git 会先计算每一个子目录的校验和,然后在Git仓库中这些...

  • Git操作记录

    本文目录 一台电脑配置多个git账号 git常用的操作命令 使用git命令合并多条commit记录 使用git命令...

  • Git基础

    获取Git仓库 在现有目录中初始化仓库 该命令将创建一个名为.git的子目录,包含初始化Git仓库的所有必须文件,...

网友评论

      本文标题:使用git-filter-repo将git子目录拆分为多个git

      本文链接:https://www.haomeiwen.com/subject/usabzltx.html