gpt4 book ai didi

git: --prune-empty 在使用 bfg 重复提交之后

转载 作者:太空狗 更新时间:2023-10-29 14:36:56 26 4
gpt4 key购买 nike

我正在使用 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

这工作正常,但在我使用 bfg 之后我有很多空提交(即提交有很好的日志消息但没有更改,因为它们只触及现在已删除的文件)。

所以下一步我尝试使用

git filter-branch --commit-filter 'git_commit_non_empty_tree "$@"' HEAD

git filter-branch --prune-empty --tag-name-filter cat -- --all

两个版本都没有达到预期的效果(删除空提交)。

相反,我最终得到的是一个存储库,其中(请参见下面的屏幕截图,左边是修剪之前,右边是修剪之后):

  1. 一些空提交已被删除
  2. 保留大部分空提交
  3. 非空提交在单独的提交序列中重复

enter image description here

有什么建议吗?

最佳答案

从您看到的重复历史记录来看,您在 BFG 运行后尝试删除旧的、现在重写的提交历史记录的尝试似乎失败了。发生这种情况的原因有很多,但主要原因是 myrepo.git 不是 BFG 说明中概述的裸/镜像克隆存储库。

有些东西保留了旧的、BFG 之前的重写历史,现在显示为副本。此历史记录有可能甚至可能存储在诸如 origin 之类的远程服务器中,这也可以解释为什么您的 filter-branch 没有删除您的所有空提交期待。

最后,您可能对当前的 pull 请求感兴趣 add the --prune-empty-commits feature to BFG - 它运行良好,与所有 BFG 一样,比运行 filter-branch 快几个数量级。

关于git: --prune-empty 在使用 bfg 重复提交之后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37192065/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com