首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从git存储库中删除旧历史记录?

如何从git存储库中删除旧历史记录?
EN

Stack Overflow用户
提问于 2010-12-23 11:07:31
回答 6查看 150.2K关注 0票数 247

恐怕我找不到任何类似于此特定场景的东西。

我有一个有很多历史的git存储库: 500+分支,500+标签,可以追溯到2007年年中。它包含大约19,500个提交。我们希望在2010年1月1日之前删除所有历史记录,以使其更小,更容易处理(我们将在归档存储库中保留历史记录的完整副本)。

我知道我想要成为新存储库的根的提交。然而,我不能找出正确的git mojo来截断repo以开始提交。我猜是某种变种

git filter-branch

涉及移植是必要的;可能还需要分别处理我们想要保留的每个200+分支,然后将存储库修补回一起(这是我知道如何做的事情)。

有没有人做过这样的事情?我有git 1.7.2.3,如果有关系的话。

EN

回答 6

Stack Overflow用户

发布于 2016-01-17 00:51:43

也许现在发布回复已经太晚了,但由于这个页面是谷歌的第一个结果,它可能仍然是有帮助的。

如果你想在你的git repo中释放一些空间,但又不想重建你所有的提交(rebase或者移植),并且仍然能够从拥有完整repo的人那里推/拉/合并,你可以使用深度浅克隆(-- git clone参数)。

; Clone the original repo into limitedRepo
git clone file:///path_to/originalRepo limitedRepo --depth=10

; Remove the original repo, to free up some space
rm -rf originalRepo
cd limitedRepo
git remote rm origin

通过以下步骤,您可以浅显您现有的存储库:

; Shallow to last 5 commits
git rev-parse HEAD~5 > .git/shallow

; Manually remove all other branches, tags and remotes that refers to old commits

; Prune unreachable objects
git fsck --unreachable ; Will show you the list of what will be deleted
git gc --prune=now     ; Will actually delete your data

How to remove all git local tags?

注:旧版本的git不支持克隆/推送/拉取来自/到浅存储库。

票数 180
EN

Stack Overflow用户

发布于 2011-07-25 19:17:32

尝试此方法How to truncate git history

#!/bin/bash
git checkout --orphan temp $1
git commit -m "Truncated history"
git rebase --onto temp $1 master
git branch -D temp

这里,$1是您想要保留的提交的SHA-1,脚本将创建包含$1master之间的所有提交的新分支,并删除所有较旧的历史记录。请注意,这个简单的脚本假设您没有名为temp的分支。另请注意,此脚本不会清除旧历史记录的git数据。在确认您确实想要丢弃所有历史记录后,运行git gc --prune=all && git repack -a -f -F -d。您可能还需要rebase --preserve-merges,但需要注意的是,该功能的git实现并不完美。如果您使用该选项,请手动检查结果。

票数 57
EN

Stack Overflow用户

发布于 2012-10-27 03:17:06

作为重写历史的替代方案,可以考虑像在this article from the book中一样使用git replace。所讨论的示例涉及替换父提交以模拟树的开始,同时仍然将完整的历史作为单独的分支保存。

票数 36
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4515580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档