使用 git filter-repo 将子目录拆分到其自己的存储库

2023-12-01

我正在关注这个:https://docs.github.com/en/get-started/using-git/splitting-a-subfolder-out-into-a-new-repository

我有一个名为my-repo

其下面的目录结构如下:

MyProject
   |
   ------ UI
   |
   ------ DB
   |
   ------ SERVER
   |
   ------ ANDROID

我想分开ANDROID上面的目录到它自己的新存储库中,称为my-repo-android

我为此做了以下事情:

  1. 克隆存储库

    git clone [email protected]:myproject/my-repo.git
    
  2. 进入该目录:

    cd my-repo
    
  3. 删除原点以避免错误推送

    git remote rm origin
    
  4. 运行过滤器 repo 命令

    git filter-repo --path MyProject/ANDROID --path-rename ANDROID/:
    

命令成功运行。但是,不是将根目录获取为ANDROID,我仍然看到目录为MyProject/ANDROID删除所有其他内容。

我究竟做错了什么?

如何使用filter-repo path-rename正确选择,以便项目结构从MyProject\ANDROID直接ANDROID根目录?

Edit:

根据下面的评论和答案,以下命令有效:

git filter-repo --path MyProject/ANDROID/ --path-rename MyProject/ANDROID/:ANDROID/

之后,我远程创建了一个新的存储库并运行以下命令:

  1. 添加远程源

    git remote add origin [email protected]:mypronect/androidRepo.git
    
  2. 主分支

    git branch -M master
    
  3. 先拉

    git pull origin master --allow-unrelated-histories
    
  4. Push

    git push -u origin master
    

现在我可以看到ANDROID新目录正确androidRepo在位桶上。

当我打开任何文件时,我也可以看到历史记录。因此filter-repo已按预期工作。

然而我只看到master分支。我没有看到任何其他历史分支和标签。 (我们为我们所做的每个版本标记/创建一个单独的分支)。

我缺少什么?如何保留与相关的所有分支和标签ANDROID还有?

我尝试了以下命令,但它不起作用:

 git push --all origin

你忘了MyProject before ANDROID in the --path-rename选项。和

  1. --path MyProject/ANDROID你在告诉filter-repo仅保留路径MyProject/ANDROID folder.
  2. --path-rename ANDROID/:你正在转换ANDROID基本上文件夹到根文件夹。

我的猜测是你filter-repo没有找到ANDROID文件夹,因为它在里面MyProject,因此无法重命名它。

最终命令可能是:

git filter-repo --path MyProject/ANDROID/ --path-rename MyProject/ANDROID/:

或者,相应的快捷方式:

git filter-repo --subdirectory-filter=MyProject/ANDROID

EDIT: 我以为你想制作content of the ANDROID文件夹作为根,相反,您似乎想移动ANDROID文件夹来自./MyProject to ./。在这种情况下@LeGEC 明白了这一点--path-rename MyProject/ANDROID:ANDROID.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 git filter-repo 将子目录拆分到其自己的存储库 的相关文章

  • 如何从 android.googlesource.com 或 github.com 下载单个目录?

    我想下载 https android googlesource com platform frameworks base git master tools aapt https android googlesource com platfo
  • 如何将更改移出主分支

    基本问题 但这一直发生在我身上 进行更改working branch 切换到master git merge working branch git push cap deploy 到舞台 泡一杯新茶 然后我回来思考其他事情并开始做出一些改变
  • git 显示已添加到 gitignore 的文件中的更改?

    我已经将 log2 文件夹和 main js 文件添加到 gitignore 如屏幕截图所示 但即使执行后git rm cached r我仍然可以看到 git 正在检测 main js 和 log2 文件夹内文件的更改 怎么会 这些的常见问
  • 丢失了我在 GIT 中的提交。你会不小心删除提交吗?

    我正在使用 git gui 但看不到我的分支 我知道我今天检查了一些东西 在完成提交并使用分支查看器验证后 我更改为较早的分支 我对之前的分支进行了更改 然后想返回到当前的分支 但我再也看不到它了 任何帮助都会很棒 回答你的问题 在大多数情
  • git 匹配多个单词的标签

    我们可以得到最后一个 git 标签 它以一个单词 例如 TEST 开头 如下所示 git describe tag dirty match TEST 我想知道如何获得最后一个以 word1 开头的标签orword2 例如测试OR跑步 我尝试
  • git 别名中的 AWK 语句

    我正在尝试创建一个 git 别名来以特定格式打印日志中的所有拉取请求 但是 我在使用 AWK 删除双空格时遇到问题 这是使用以下命令的 git log 的输出 git log merges grep pull request pretty
  • VS 2015 + Bower:在防火墙后面不起作用

    Problem 在 Visual Studio 2015 中 使用 Bower 我的包在防火墙后面时恢复失败 并出现类似以下内容的错误 ECMDERR 无法执行 git ls remote tags heads git github com
  • 在 Azure DevOps 项目之间移动存储库时保留拉取请求

    我在同一帐户内有两个 Azure DevOps 项目 我想将存储库从一个项目移动到另一个项目 这一页探索如何在具有完全保真历史记录的团队项目之间移动 git 存储库 https learn microsoft com en us azure
  • 使用终端时 Git 推送在总计后卡住了?

    我尝试将一些文件推送到Github 总大小只有22 2M 我不知道为什么它在总行之后卡住了 我读过推送到 Github 时 Git 推送挂起 https stackoverflow com questions 16906161 git pu
  • Netbeans 和 Git,.obj 文件被忽略

    我正在开发一个涉及 obj 文件的小型 git 项目 当我查看 项目选项卡 时 我发现它们被忽略了 但如果我查看我的 gitignore 我无法理解为什么 DepthPeeling nbproject private DepthPeelin
  • apt-get 无法在 ubuntu dockerfile 中工作

    我对 docker 相当陌生 正在尝试通过编写自己的镜像来学习 并且目前正在阅读 Docker 的实际操作 ISBN 1633430235 在我自己的代码和书中的示例 第 146 页 中 我想通过 dockerfile 安装 git My
  • 如何在 macOS 上将 Git 升级到最新版本?

    我刚刚购买了一台装有 OS X Lion 的新 Mac 我在终端中检查了默认安装的 git 版本 我得到了答案 git version gt git version 1 7 5 4 我想将 git 升级到最新版本 1 7 8 3 因此我下载
  • 当 .gitattributes 中的 EOL 设置为 CRLF 时,Git diff 认为行结尾为 LF

    当我恢复对带有 Windows 行结尾的文件的更改并且 gitattributes 将 EOL 定义为 CRLF 时 git 认为行结尾已更改为 LR 即使十六进制编辑器显示 CRLF 仅当 gitattributes 定义 EOL 字符时
  • 当当前分支上有未提交的更改时签出另一个分支

    大多数时候 当我尝试签出另一个现有分支时 如果我在当前分支上有一些未提交的更改 Git 会不允许我这样做 所以我必须首先提交或隐藏这些更改 然而 有时 Git 确实允许我在不提交或存储这些更改的情况下签出另一个分支 并且它会将这些更改携带到
  • Git difftool 未启动外部 DiffMerge 程序

    我一直遵循 戴夫的博客条目 http www davesquared net 2009 05 setting up git difftool on windows html 链接在此answer https stackoverflow co
  • 自定义 SSH 端口上的 Git

    我的 VPS 提供商建议我将 SSH 端口保留为他们默认分配的自定义端口号 不是 22 问题是 虽然我知道我可以在创建远程配置时提供端口号 但在进行 Git 克隆时似乎无法提供相同的操作 我在用gitolite https wiki arc
  • Android 存储库初始化失败

    我想我非常仔细地遵循该网站的说明 http source android com source downloading html http source android com source downloading html 但是当我尝试这
  • 如何让 Aptana Studio 记住 git ssh 密码

    我找不到任何有关如何获得 Aptana Studio 的内置 git 支持来记住执行推 拉操作的 ssh 密码的指南 信息 有人有什么想法吗 Aptana Studio 实际上是内置的 GIT 程序 它将在 Windows 上的 C Use
  • git 排除与忽略

    I use Tower http www git tower com 用于在 Mac 中使用 Git Tower 中的设置具有创建 gitignore 的 忽略 部分 但它还有另一个名为 排除 的部分 似乎可以将排除与 git ls fil
  • 无法通过 Git Bash 克隆 git 存储库

    在尝试使用克隆存储库时git clone 它显示以下错误 致命 无法访问 https github com microsoft c9 python getting started git https github com microsoft

随机推荐

  • 当键盘处于活动状态时,UITextView 自动大写功能不起作用

    目前 我正在像这样的按钮目标中设置自动大写 This method is fired when keyboard is still active IBAction changeAutoCapitalization id sender sel
  • 在 Excel VBA 中解析 JSON

    我有同样的问题Excel VBA 解析的 JSON 对象循环但找不到任何解决方案 我的 JSON 具有嵌套对象 因此建议的解决方案 如 VBJSON 和 vba json 对我不起作用 我还修复了其中一个使其正常工作 但结果是由于 doPr
  • 构建淘汰模型并动态查看,未设置单选按钮

    我正在制作其中之一我之前的问题完全动态 因为模型是根据服务器数据构建的 并且视图通过淘汰赛循环遍历视图模型ko foreach功能 我面临的问题是 单选选项不会保留设置的值 即我单击操作系统 然后选择数据库选项 然后操作系统设置消失 当从属
  • 正则表达式替换浮点数中的多个句点

    如果我输入这样的内容 a1 b22 333 我希望它输出 1 22333 或 122 333 它去掉了非数字字符和任何超过 1 的句点 我对此的最佳猜测是 obj value obj value replace 0 9 1 g obj va
  • C# 处理信息时表单冻结

    我为自己编写了一个个人网络抓取工具 用于抓取艺术家信息 代码可以工作 但是当我按下按钮并开始处理 while 循环时 GUI 冻结了 我将文本框设置为 refresh 但我无法移动表格 取消程序的唯一方法就是强制退出 我正在重写这个 所以我
  • 如何使用 ARKit 和 RealityKit 检测 2D 图像

    我想使用检测二维图像ARKit and 现实套件 我不想使用 SceneKit 因为许多实现都是基于 RealityKit 的 我在 RealityKit 上找不到任何检测图像的示例 我提到https developer apple com
  • 如何使用 javascript 添加新的
  • 如何使用 onclick 中的函数将列表元素添加到现有 ul 我需要它添加到此类列表中 ul li One li li Two li li Three li ul 另一个列表项 其 id 为 element4 其下为文本 Four 我尝试了
  • shell 错误地读取在 Windows 中创建的文件

    这是我的 shell 脚本和属性文件 test sh bin bash source default properties echo app name echo app name 默认属性 app name TestApplication
  • 如何更快地读取/遍历/切片 Scipy 稀疏矩阵(LIL、CSR、COO、DOK)?

    为了操作 Scipy 矩阵 通常使用内置方法 但有时您需要读取矩阵数据以将其分配给非稀疏数据类型 为了演示 我创建了一个随机 LIL 稀疏矩阵 并使用不同的方法将其转换为 Numpy 数组 纯 Python 数据类型会更有意义 from f
  • 在 Websphere 中跟踪 HTTP 请求

    我有以下要求 我想跟踪通过我们的 WebSphere 服务器的所有请求 我们有一些 Web 应用程序和一些 Web 服务部署到我们的服务器上 但是 我不想将跟踪机制添加到每个应用程序中 是否有可能添加一些插件或为WebSphere服务器创建
  • Python:实时或从 wav 文件获取音量分贝级别

    对于项目工作 我需要从录制的音频文件或使用麦克风实时录制来测量音量 经过初步研究 我尝试使用声音文件库 该文件是使用 soundfile 读取的并使用20 np log10 np sqrt np mean np absolute a 2 我
  • 为什么添加 float 属性会使我的 div 表现得像内联块?

    我有两个 div 有两个主要属性显示块和宽度 block1 display block width 20 background color red height 100px block2 display block width 70 bac
  • 查找圆与矩形碰撞的碰撞边时出现问题

    我发现了一个非常适合检测圆形和矩形之间的碰撞以及找到接触点的函数 然后 我使用该点来确定圆击中矩形的哪一侧 以便我可以反映圆 但是 当圆心位于矩形内部时 该函数会将最近的点作为圆心 并将其处理为击中顶点而不是边 这是我的代码 def col
  • PyCharm 5.0.1 无法解析内置模块/方法

    我的 PyCharm 5 0 1 安装无法解析对任何内置模块或方法的引用 正如你所看到的 我已经通过 cygwin 安装了 python 我已经尝试过 重新安装 更新 python 安装 从 2 7 9 到 2 7 10 重新安装pycha
  • 协议符合具有关联值的类型

    我有以下片段 protocol MyProtocol Identifiable where ID UUID var id UUID get var test MyProtocol 协议 MyProtocol 只能用作通用约束 因为它具有 S
  • 如何获取 PHP 关联数组索引的智能感知? [复制]

    这个问题在这里已经有答案了 可能的重复 PHPDoc 用于可变长度参数数组 每当我打字时 SERVER 并按 Ctrl 空格键 它会给我可能的索引列表 我怎样才能使我创建的数组成为可能 代码完成为 SERVER为您提供有关人们从该关联数组中
  • 获取 Google Static Maps API 的西南角和东北角

    我在 Unity 应用程序中获取 Google 静态地图的边界时遇到问题 我已经尝试了在 stackoverflow 上找到的多个答案 NET相关问题 Javascript相关问题 我试图计算角点的地图是this one 首先我尝试翻译ma
  • 从驱动程序代码设置设备权限失败

    我想从 Linux 内核 3 10 14 中的用户空间访问 I2C 设备驱动程序节点 我在内核配置中添加了 i2c dev 并获得了 dev i2c 设备节点 然而他们有许可 ls l dev i2c crw root root 89 1
  • 定义 JSON 结构是否需要 JSON 模式?

    我问这个问题是因为我看到当前的 JSON 模式草案 http json schema org 建议采用以下方式拥有 JSON 架构 对于 JSON a abc b 123 草案中提出的模式是这样的 type object propertie
  • 使用 git filter-repo 将子目录拆分到其自己的存储库

    我正在关注这个 https docs github com en get started using git splitting a subfolder out into a new repository 我有一个名为my repo 其下面