有人把所有二进制文件都交给我们的集市主干,我想摆脱它.`bzr del file'只删除当前版本的文件,但不删除文件的历史记录.
有没有办法可以删除文件历史记录,以便我们不必全部下载数百MB的数据?
有两种方法.但是您需要准备好重新创建分支历史记录的一部分(甚至完整),这样在删除文件后,当前(本地)分支将与新分支不兼容.
1)手动方式.您可以在添加大文件之前创建分支的副本以进行修订.然后,您需要半手动重新提交进一步的修订并排除大文件.使用replay来自bzr-rewrite插件(以前的bzr-rebase)的命令来重放那些没有对大文件进行更改的修订.并且merge -cN用于存在对大文件的更改的修订,手动删除这些文件并提交.因此,您将保留大部分历史记录,并为分支的其他文件保留唯一的文件ID.
2)使用bzr-fastimport插件将历史导出为带导入的快速导入流bzr fast-export.然后用bzr fast-import-filter -x FILE命令过滤掉大文件.并最终重新创建没有带bzr fast-import命令的大文件的新分支.此方法会破坏您的所有历史记录,并且您的所有文件都将获得新的文件ID,因此您的新分支将与旧分支完全不兼容.
在任何情况下,如果您拥有包含大文件历史记录的共享存储库,则需要创建新的空共享存储库并将新的过滤分支放在那里.
如果二进制文件是在上次提交中添加的,则可以取消提交。
bzr uncommitRun Code Online (Sandbox Code Playgroud)
这将使您的工作树处于您编写“bzr commit”之前的状态。然后删除文件并重新提交。
有关更多详细信息,请查看有关撤消错误的集市文档。
您可以使用 -r 选项在一项操作中撤消多次提交:bzr uncommit -r -4
如果您不关心修订历史记录,则可以选择其他选项:
您可以导出分支 ( bzr export DESTINATION),然后创建新的主干。
导出命令将仅导出头存储库,没有任何历史记录。