使用 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 将子目录拆分到其自己的存储库 的相关文章

  • git stash 删除最旧的存储(比如最旧的 5 个存储)

    如何在一个语句中删除最旧的存储 例如最旧的 5 个存储 而不是执行以下操作 git stash drop stash 3 git stash drop stash 4 git stash drop stash 5 git stash dro
  • 如何解决 VS Code 中变基拉取的合并冲突?

    当我做一个git pull rebase 并且我的提交中存在合并冲突 我得到冲突差异视图 解决所有冲突并暂存文件 然后呢 我可以打开终端并运行git rebase continue但是 VS Code 中不应该有一个按钮来完成变基吗 只需使
  • 致命:无法将 HEAD 解析为有效引用

    我正进入 状态fatal Failed to resolve HEAD as a valid ref 每当我尝试承诺时 我努力了 echo ref refs heads master gt git HEAD 但它不起作用 也尝试过 git
  • 如何禁用 GitHub 中的拉取请求?

    我试图了解如何禁用 github 中的 拉取请求 问题一 我们正在尝试使用变基工作流程 这意味着如果不是快速推进 那么使用拉取请求可能会有害 一种解决方案 为我想要禁用拉取请求的分支设置分支权限 或者将我添加为任何进入 master 的内容
  • 我可以忽略全局 .gitignore 吗?

    我的全局 gitignore 一般都很棒 但对于这个一次性项目 我不希望应用全局规则 如何删除这个怪异存储库的全局 gitignore 规则 在您的存储库中运行此命令 git config local core excludesfile f
  • 为什么 git-svn 应该积极搜索旧历史?

    当我运行 git svn clone s 时发生了一些奇怪的事情 尽管以下信息告诉我们不要惊慌 但我想知道为什么会出现这种 svn 错误 为什么这个路径不存在 是被别人删除了吗 如果是 为什么 git svn 应该积极搜索旧历史记录 Ini
  • git-svn 如何知道要提交到哪个分支?

    我的存储库是 SVN 我使用 git 进行所有开发 我们有一个标准布局 我用以下命令初始化了我的本地存储库git svn init s
  • Git:以新名称签出旧版本的目录

    如何以新名称查看目录的先前版本 我一直都有一个目录foo在我的仓库中 我想创建一个目录foo old在我当前的工作树中 其内容是HEAD 2 foo 我同时需要两个版本 以确保它们给出相同的结果 测试这需要相当多的代码 并且需要同时提供两个
  • 使用 TFS REST API 获取 Git 提交的最新关联工作项

    我正在尝试获取关联的工作项使用 TFS REST API 进行 GIT 提交 https www visualstudio com en us docs integrate api git commits 我的请求 URL 如下所示 htt
  • 合并 BPM 图表的最佳实践

    我们在 Java 环境中使用 Alfresco 活动图 这些图是有版本的 我们确实使用 GIT 我们经常会遇到合并分支的合并冲突 解决这个问题确实很痛苦 因为我们必须比较文件的文本内容来检查差异 有时 重新应用更改比合并更轻松 是否有合并此
  • Git 中的数据完整性?

    我现在已经多次听到提到 Git 提供数据完整性 但是 这是什么意思 据我所知 git 中的所有对象都是使用 SHA 1 校验和来访问的 并且该校验和是根据文件的内容计算的 这意味着如果文件发生更改 您将得到不同的校验和 但这如何提供数据完整
  • Smartgit:自动插入提交消息

    有没有办法使用钩子脚本在 Smartgit 中自动插入提交消息 重击 如果用户提交了他的更改 我想预加载提交消息字段 我没有看到任何SmartGit配置 http www syntevo com smartgit documentation
  • 合并后 Git 分支和提交历史记录

    我正在开发一个项目 单独 对于我开发的每个功能 我都会创建一个新分支 处理该功能 然后将其合并到 master 中 所以通常我不会同时在两个不同的分支上工作 也不会在一个分支上工作时接触master 当我合并一个分支时 我看到 使用gitx
  • 创建多个 git 分支的联合分支

    我希望能够在现有分支之上分层其他分支 并独立修改这些分支 这很有用 例如 允许将各个子项目的二进制文件统一到同一个项目中bin目录 一般来说 给定的文件仅存在于一层中 理想情况下 我想我会使用 unionfs 来完成此任务 但它必须以某种方
  • Git撤销本地分支删除

    我刚刚删除了错误的分支 并进行了一些我需要的实验性更改git branch D branchName 如何恢复分支 您可以使用git reflog http git scm com docs git reflog查找分支最后一次提交的 SH
  • 是否可以从 Github 网站或 API 获取分支合并列表?

    在我们的工作流程中 不会 直接 提交到主分支 主分支仅接收来自 Pull 请求的合并 我们可以将每次合并视为添加到主分支的新功能 因此 我想获得一个合并到 master 中的列表 作为一种可视化随着时间的推移添加到产品中的功能块的方式 gi
  • 如何在现有裸存储库中创建引用日志信息

    您可能已经知道 默认情况下 git 不会为新的裸存储库启用引用日志更新 问题是 我有一个很长的历史存储库 但它是在我设置 logAllRefUpdates 标志之前创建的 现在我希望其他应用程序可以使用该信息 如何通过对现有存储库进行最少的
  • 使用nodegit切换分支/标签

    我整个早上都在尝试打开现有的存储库并使用 nodegit 更改分支或标签 文档内容很丰富 但似乎已经过时了 关于我做错了什么有什么想法吗 var NodeGit require nodegit var open NodeGit Reposi
  • git 清除远程仓库

    如果我将错误的初始提交 或多个 推送到远程存储库 并且只想清除 销毁它 我可以通过命令来完成吗 将其从服务器中完全删除非常重要 这样它就不会占用磁盘空间 例如 今天我推送了一个完整的 Visual Studio 项目 其中包含 dll sd
  • gerrit - git(pull、checkout、cherrypick)的用途是什么?

    在 Android 的 gerrit ex 中 link https android review googlesource com c 109934 要下载补丁 我看到4个选项 回购下载 checkout pull 择优挑选 它们之间有什

随机推荐

  • 当键盘处于活动状态时,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 其下面