如何将子模块转换为嵌入式存储库
How to transform a submodule to an embedded repository
我曾经在 git 存储库 (main
) 中有一个 git 存储库 (sub
)。当时我很开心。但是,一个悲伤的日子,在过度工程热潮的火花中,我决定把它变成一个子模块。现在我想回到过去的美好时光:将子模块转换回一个简单的子文件夹,在 sub/.git
目录中跟踪该项目的历史,而不是将其放在主存储库的 .git/modules/sub
中文件夹。我该怎么做?
git rm --cached sub
和 git submodule deinit
都将历史记录保存到 .git/modules/sub
而不是将其移动到 sub/.git
。 This question about un-submoduling differs from mine as it wants to integrate the submodule history into the main repository’s history, whereas I want to keep them separate. Reading the answers about removing a submodule,我也找不到如何保留子模块的历史并将其传输到嵌入式存储库而不是完全丢失它。
请注意,我不想将 sub
的历史记录完全推送到其相应的远程:我想保留一些本地分支(出于保密原因)。所以,sub
的地方历史是弥足珍贵的。我不能简单地从 main
中删除与 sub
相关的所有内容并再次从远程克隆(另外,从网络中获取我在本地已有的内容是不雅的,我宁愿避免它,除非它大大简化了流程)。
出于简单原因,我想这样做,因为我不想在 main
中保留对 sub
的特定“当前”提交的引用。目前,每次我在 sub
中向前移动 master
分支时,main
都会意识到子模块中发生了某些变化,并且让我对更新子模块感到烦恼。
首先检查 .git/modules/sub
是否可以重命名为 sub/.git
您必须编辑新的 sub/.git/config
文件,以删除 core.worktree
设置。
但是你应该在那里看到你完整的子历史记录。
我曾经在 git 存储库 (main
) 中有一个 git 存储库 (sub
)。当时我很开心。但是,一个悲伤的日子,在过度工程热潮的火花中,我决定把它变成一个子模块。现在我想回到过去的美好时光:将子模块转换回一个简单的子文件夹,在 sub/.git
目录中跟踪该项目的历史,而不是将其放在主存储库的 .git/modules/sub
中文件夹。我该怎么做?
git rm --cached sub
和 git submodule deinit
都将历史记录保存到 .git/modules/sub
而不是将其移动到 sub/.git
。 This question about un-submoduling differs from mine as it wants to integrate the submodule history into the main repository’s history, whereas I want to keep them separate. Reading the answers about removing a submodule,我也找不到如何保留子模块的历史并将其传输到嵌入式存储库而不是完全丢失它。
请注意,我不想将 sub
的历史记录完全推送到其相应的远程:我想保留一些本地分支(出于保密原因)。所以,sub
的地方历史是弥足珍贵的。我不能简单地从 main
中删除与 sub
相关的所有内容并再次从远程克隆(另外,从网络中获取我在本地已有的内容是不雅的,我宁愿避免它,除非它大大简化了流程)。
出于简单原因,我想这样做,因为我不想在 main
中保留对 sub
的特定“当前”提交的引用。目前,每次我在 sub
中向前移动 master
分支时,main
都会意识到子模块中发生了某些变化,并且让我对更新子模块感到烦恼。
首先检查 .git/modules/sub
是否可以重命名为 sub/.git
您必须编辑新的 sub/.git/config
文件,以删除 core.worktree
设置。
但是你应该在那里看到你完整的子历史记录。