git - 如何删除 git 子模块中的提交历史记录?
问题描述
我有一个带有子模块的git项目(源文件=使用hugo发布的markdown文件)(链接到“public /”文件夹,并且只包含一些生成的文件(然后通过专用的github项目发布到github页面)) .
HOME :
.git/
.gitmodules
content/
public/ -> linked to a submodule (no .git folder)
子模块已通过git submodule add -b slides <URL> public
(per : https://gohugo.io/hosting-and-deployment/hosting-on-github/ )添加
一切正常(我可以分别提交和推送源文件和/或自动生成的文件)。
但是我对子模块文件夹的内容(在专用项目中发布)的提交历史越来越多。此外,这是 100% 无用的(一直自动生成)。
那么有没有一种方法可以轻松地从子模块中删除所有这些提交,并且只从子模块中删除?
解决方案
子模块是目标 repo 的本地克隆。
它的 git 数据库存储在下.git/modules/<modulename>
(而不是.git
目录下public/
)。
所以 :
- 简短的回答是:“没有简单的方法”
- 如果您想将其保留为子模块:您可以尝试在基础存储库中创建一个特定的分支,这只会保留主分支中的一些选定提交
- 如果您有能力将依赖项作为子模块删除:您可以寻找其他方法来集成此外部存储库(
git subtree
例如)
总而言之,我不确定 2. 或 3. 在您的情况下是否值得付出努力。
推荐阅读
- javascript - 页面刷新后继续点击 CSS 更改
- swift - 在多个(超过 2 个)视图控制器中显示一个通用进度条
- r - 作为控制台或终端执行的函数,相同 Rdata 对象的大小差异
- javascript - 两次导入同一个模块会引发 ReferenceError
- reactjs - graphql中的动态查询名称
- node.js - AWS Rabbitmq 与 nodejs 连接失败
- testing - 如何在 Jetpack Compose 中使用 Rotation Change 测试 rememberSaveable
- html - 如何在 IE7 中垂直对齐内联 div 元素?
- macos - 列出特定架构的所有应用程序(英特尔、Apple Silicon、通用或其他)
- java - 如何解决 Groovy 代码中的无效 URL?