git - Git LFS 迁移失败并显示“无法更新参考:退出状态 129”
问题描述
我正在使用以下命令在我的 git repogit lfs migrate
的干净克隆上运行:--mirror
git lfs migrate import --include=/path/to/[dir_to_convert_to_lfs]/** --everything
输出是:
$ git lfs migrate import --include=/path/to/[dir_to_convert_to_lfs]/** --everything
migrate: Sorting commits: ..., done.
migrate: Rewriting commits: 100% (22129/22129), done.
[branch abc -> xyz]
...
could not update refs: exit status 129
之后,它似乎破坏了我的回购 - 例如,如果我然后打电话:
git rev-list --all --count
它表明我现在有 42251 次提交 - 而我的期望是 git lfs migrate import 会更新现有提交以指向 LFS 中的文件。
目前,我正在努力寻找有关此错误消息和/或状态代码指示的任何信息。此外,没有 git lfs 日志 - 即如果我最后调用 git lfs 日志,它会报告:
$ git lfs logs last
No logs to show
我正在使用 git 版本 2.27.0 和 git lfs 版本 2.11.0。
我对 Git LFS Migrate 做错了吗?有没有办法调试这个?
更新: 我还在github 上的 git lfs repo 上为这个问题添加并关闭了一个问题。
解决方案
错误代码 - 退出状态 129:
我对此有点困惑,找不到 git lfs 错误代码列表。但是,此git-lfs 问题的 OP指出“129 表示使用错误”。我承认这让我一点也不聪明。
解决方案:
我发现这与这个git-lfs 问题非常相似,或者至少与评论中描述的一些问题有关。例如,它似乎与此评论或此评论中描述的问题相似。
尽管这些评论中的第一个提供了更新参考的更详细的解决方案,但我发现评论解决方案中提供的脚本能够工作。感谢原作者,我在这里重复一遍:
当你运行时git lfs migrate import
,运行--object-map
git lfs migrate import --include=/path/to/[dir_to_convert_to_lfs]/** --everything --object-map=../mapping_file.txt
然后可以在 git 存储库中执行以下脚本:
MAP_FILE=../mapping_file.txt
git for-each-ref | grep tags | while read -r oid type tag; do
while IFS=, read -r old_oid new_oid; do
if [[ "$oid" == "$old_oid" ]]; then
echo TAG $tag still pointing to old_oid $old_oid instead of $new_oid
git tag -f $(basename $tag) $new_oid
fi
done < $MAP_FILE
done
推荐阅读
- android - 由于“进程崩溃”,检测运行失败。
- php - 迁移到 Postgresql
- sapui5 - How to set the ProcessFlowLaneHeader state with JSON-model?
- r - 从 R 中的引导对象输出中获取偏差列
- html - 编码 mailchimp 电子邮件内联样式无法正常工作
- asp.net-core - 如何获取 NPOI Excel RichStringCellValue?
- c# - 事件存储无法写入软删除流
- php - 如何检查数组中的时间范围是否存在于PHP中的两个时间变量之间
- python - Printing out all the values from SQLite3 tables
- python - Calculating no of non-zero in a column corresponding to another column