【发布时间】:2011-03-23 19:33:54
【问题描述】:
我有一个托管的 GIT 存储库,可用磁盘空间有限,但与 RedMine 系统相连。 我正在打包一些软件并推拉存储库,我的空间不足。现在我需要清洁(不再需要这些包裹)。 考虑到我无法重新创建存储库(它与 RedMine 的链接过于严格),我如何从远程存储库历史记录中删除这些包?
【问题讨论】:
标签: git repository
我有一个托管的 GIT 存储库,可用磁盘空间有限,但与 RedMine 系统相连。 我正在打包一些软件并推拉存储库,我的空间不足。现在我需要清洁(不再需要这些包裹)。 考虑到我无法重新创建存储库(它与 RedMine 的链接过于严格),我如何从远程存储库历史记录中删除这些包?
【问题讨论】:
标签: git repository
这就是为什么您应该考虑不使用 VCS(版本控制系统),例如 Git(它是一种 DVCS)或任何其他 VCS 来进行打包和发布管理。
见Best practice to store .jar files in VCS (SVN, Git, …)。
像 Nexus 这样的外部工件存储库更适合,尤其是在清理和删除软件的旧打包版本时。
我看不出如何在你的 repo 的 Git 历史记录中更改任何内容同时保留所述 repo 和你的 RedMine 系统之间的链接:任何更改都会触发新的 SHA1 引用。 p>
【讨论】:
您可以使用git rebase -i 将一些提交“压缩”在一起,这样中间件就不会再在存储库中,然后git push -f 将其放到服务器上。但是如果其他人使用相同的存储库,rebase 会导致问题。
此外,只有在垃圾收集完成后,原始修订和与它们相关的文件才会从存储库中实际删除(我认为您不能远程执行此操作,但它应该自动发生)和 reflog 不再引用它们(条目默认保留 90 天)。
【讨论】: