git - 使 git `replace` 提交永久(或类似)
问题描述
我正忙着将我所有现有的 SVN 存储库转换为 Git,同时也借此机会利用 Git 轻松重写一些历史的能力。为此,我还使用 git filter-repo 来删除不需要的文件并通过脚本进行一些标准重命名。(注意:它们都是只有我工作的单独存储库,所以不需要更改历史的免责声明,我知道警告:))
filter-repo
工作得很好(使用 Python 脚本功能加上它比 filter-branch 快得多),但它会创建替换提交。一旦回购重组完成,我想再次摆脱所有这些替换提交,以真正融入改变的历史。最好是通过脚本,因为我有很多带有很多提交的 repos。然而,当我在谷歌上搜索如何做到这一点时,我空手而归......
这样做的原因:我的 Git 命令行客户端并没有为此烦恼,但我的 GUI(Windows 版 SmartGit)一直唠叨说它不支持替换提交(它检测到它说的 refs/replace-refs)。无论如何,它会显示 repo 内容,我可以从那里继续填写丢失的提交消息,进行更多清理等,但我还没有进一步看,所以谁知道它最终会破坏什么?
我已经找到了一种解决方法,将每个 repo 推送到添加到本地 Gitea 服务器的空 repo,然后删除本地 repo 并将其克隆回本地。虽然我可以在剩下的转换旅程中忍受它,但我一直想知道我是否可以/可以做得更有效?
解决方案
如果refs/replace-refs
有问题,您可以使用选项filter-repo
运行命令。
--replace-refs
试试看:
--replace-refs update-no-add
# or
--replace-refs delete-no-add
看看执行后是否还有refs/replace-refs
对象filter-repo
。
A. Chiesa在评论中确认:
git filter-repo --replace-refs delete-no-add
在我的情况下,简单地运行。
我没有使用 replace refs,除了由 创建的那些filter-repo
,并且该命令摆脱了所有这些。
推荐阅读
- spring - (Spring 中的 FlywaySqlException) 用户密码认证失败
- python - adb shell 输入触摸屏点击不起作用
- github - 这个错误正常吗。当它说时如何解决GitHub错误
- azure - 为什么在 Microsoft Graph API 调用期间出现此“Authentication_MissingOrMalformed”错误?
- java - 从多个网站抓取数据的最佳方法是什么?
- python - 如何根据某些条件从数据框创建过滤条件?
- amazon-web-services - AWS Storage Gateway - 串行控制台问题 - KVM Linux
- azure - Microsoft Azure 跨用户访问
- powershell - Powershell 随机变色
- html - 与图标链接::before 图标不应该有下划线 - 显示:内联块是没有选项?