我看到了很多关于如何从所有git历史记录中删除一个单个文件的文章和问题。例如:在Git存储库中删除/删除大文件的提交历史记录?
我想要做的是删除所有不在主分支头部的文件。
我的用例是我正在从一个单体存储库(称为
首先,在GitHub上创建了一个新存储库
然后,我从
但是,
我想做的是:
我的用例是我正在从一个单体存储库(称为
monolith
)分离出一个较小的存储库(称为small
)。我想在创建small
时保留git历史记录,但只保留与相关的git历史记录。首先,在GitHub上创建了一个新存储库
small
。然后,在我的笔记本电脑上,我将其添加为名为origin-small
的远程到我的本地monolith
存储库,并将monolith
的主分支的当前状态推送到origin-small
。然后,我从
monolith
中删除了远程origin-small
,更改了目录,并从GitHub克隆了small
。看起来,我有了一个带有完整历史记录的原始存储库monolith
的副本。但是,
small
的历史记录中有很多不再相关的文件,它们使存储库变得臃肿。我想做的是:
- 从
small
中删除所有不必要的文件。 - 运行一个命令来清除刚刚删除的文件的整个git历史记录。
git filter-branch
?
./filter-repo
替换为.git/filter-repo
,以便使其开箱即用。这是git-filter-repo
现在默认放置结果的位置。 - FvD