首页 > 解决方案 > 如何删除 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% 无用的(一直自动生成)。

那么有没有一种方法可以轻松地从子模块中删除所有这些提交,并且只从子模块中删除?

标签: gitgithub

解决方案


子模块目标 repo 的本地克隆。
它的 git 数据库存储在下.git/modules/<modulename>(而不是.git目录下public/)。

所以 :

  1. 简短的回答是:“没有简单的方法”
  2. 如果您想将其保留为子模块:您可以尝试在基础存储库中创建一个特定的分支,这只会保留主分支中的一些选定提交
  3. 如果您有能力将依赖项作为子模块删除:您可以寻找其他方法来集成此外部存储库(git subtree例如)

总而言之,我不确定 2. 或 3. 在您的情况下是否值得付出努力。


推荐阅读