Car*_*ijn 6 git smartgit git-rewrite-history git-filter-repo
我正忙着将我现有的所有 SVN 存储库转换为 Git,同时也借此机会利用 Git 的能力轻松重写一些历史记录。为此,我还使用 git filter-repo 来删除不需要的文件并通过脚本进行一些标准重命名。(注意:它们都是我工作的单独存储库,因此不需要更改历史的免责声明,我知道注意事项:))
filter-repo工作得很好(使用 Python 脚本功能,而且它比 filter-branch 快得多),但它会创建替换提交。一旦回购重组完成,我想再次摆脱所有这些替换提交,以真正融入改变的历史。最好通过脚本,因为我有很多有很多提交的存储库。然而,当我在谷歌上搜索如何做到这一点时,我空手而归......
原因是:我的 Git 命令行客户端并没有被这个困扰,但是我的 GUI(Windows 版 SmartGit)一直在抱怨它不支持替换提交(它检测到 refs/replace-refs 它说)。无论如何,它显示 repo 内容 OK,我可以从那里继续填写丢失的提交消息,做一些更多的清理等,但我没有进一步看,所以谁知道它最终会破坏什么?
我已经找到了一种解决方法,将每个存储库推送到添加到本地 Gitea 服务器的空存储库,然后删除本地存储库并将其克隆回本地。虽然我可以在余下的转换过程中接受它,但我一直想知道我是否可以/本可以做得更有效?
如果refs/replace-refs有问题,您可以filter-repo使用
--replace-refs选项运行您的命令。
试试看:
--replace-refs update-no-add
# or
--replace-refs delete-no-add
Run Code Online (Sandbox Code Playgroud)
看看执行refs/replace-refs后是否还有对象filter-repo。