fue*_*zig 2 git git-rewrite-history bfg-repo-cleaner
我正在使用bfg从(克隆)git 存储库中删除一些子目录:
java -jar bfg-1.12.12.jar --delete-folders {folder1,folder2,folder3} --no-blob-protection myrepo.git/
git reflog expire --expire=now --all && git gc --prune=now --aggressive
Run Code Online (Sandbox Code Playgroud)
这工作正常,但在我使用 bfg 之后,我有很多空提交(即带有漂亮日志消息的提交但没有更改,因为它们只涉及现在已删除的文件)。
所以下一步我尝试使用
git filter-branch --commit-filter 'git_commit_non_empty_tree "$@"' HEAD
Run Code Online (Sandbox Code Playgroud)
或者
git filter-branch --prune-empty --tag-name-filter cat -- --all
Run Code Online (Sandbox Code Playgroud)
两个版本都没有预期的效果(删除空提交)。
相反,我最终得到的是一个存储库(见下面的截图,左边是修剪前,右边是修剪后):
有什么建议吗?
从您看到的重复历史记录来看,您在 BFG 运行后尝试删除旧的、现在重写的提交历史记录似乎失败了。发生这种情况的原因有很多,但主要是如果myrepo.git不是 BFG 说明中概述的裸/镜像克隆存储库。
有些东西保留了旧的、前 BFG 重写历史,现在显示为重复。此历史记录可能甚至很可能存储在诸如 的远程中origin,这也可以解释为什么您filter-branch没有删除您期望的所有空提交。
最后,您可能对当前将功能添加--prune-empty-commits到 BFG 的pull-request 感兴趣- 它运行良好,并且与 BFG 的所有内容一样,比 running 快几个数量级filter-branch。
| 归档时间: |
|
| 查看次数: |
1955 次 |
| 最近记录: |