我有一个非常大的Subversion仓库(> 200,000个提交),最近我们迁移到了Git。多年来,很多人都会犯一些小错误,比如添加iso或msi软件包,添加不应该添加的文件夹等等…我们通过删除文件/文件夹并提交来清除这些问题。SVN能很好地进行稀疏检出,所以这并不是问题。现在使用Git后,客户端需要拉取整个历史记录,本地克隆现在已经达到50GB,是时候做一些清理了…
是否有一种方法可以从历史记录中删除所有被删除的文件?或者创建一个新的仓库,将存在于最新提交中的所有文件移动到其中?
我尝试过
我还使用了
好吧,在最终,我可以简单地启动一个新的仓库,并将最新的文件复制到其中。然后我将失去历史记录,但可以将原始大型仓库保留为档案仓库,以便在需要查找历史记录时使用。
我真的希望有更好的方法…
是否有一种方法可以从历史记录中删除所有被删除的文件?或者创建一个新的仓库,将存在于最新提交中的所有文件移动到其中?
我尝试过
git filter-branch
命令,它对我有所帮助。但这只适用于那些我知道路径的文件。我还使用了
git log --diff-filter=D --summary
以获取所有删除文件的列表,但有成千上万个…好吧,在最终,我可以简单地启动一个新的仓库,并将最新的文件复制到其中。然后我将失去历史记录,但可以将原始大型仓库保留为档案仓库,以便在需要查找历史记录时使用。
我真的希望有更好的方法…
git
的浅克隆功能:它允许你从git clone
命令中排除任意数量的提交。这有效地在你指定的位置修剪提交DAG。我猜应该可以有一个带有完整历史记录的git
存储库,以及一个浅克隆的存储库,其中排除了你过去的错误,后者用于新开发,而前者仅用于考古。 - cmaster - reinstate monica