尝试修复损坏的文件后,git-svn fetch/rebase失败

Gou*_*oug 14 git git-svn

我最近在我的存储库中有一个损坏的对象,指向我的HEAD(对象是空的).它发生在中断git-svn命令之后.然后,我通过手动更改此对象上的引用来恢复我的存储库.

现在,我想将我的git存储库与SVN同步,但git svn fetch返回:

fatal: Invalid revision range 5a5dc92cd3083960fb4828ae387a32cda0554fa8..refs/remotes/a-branch
rev-list --pretty=raw --no-color --reverse 5a5dc92cd3083960fb4828ae387a32cda0554fa8..refs/remotes/a-branch --: command returned error: 128
Run Code Online (Sandbox Code Playgroud)

5a5dc92cd3083960fb4828ae387a32cda0554fa8指的是损坏的对象,我想说git-svn不考虑这个对象而是另一个,但我不知道如何破解这个.

如果有人知道git-svn在哪里/如何在内部存储这个值,那就太好了.

谢谢

kni*_*ttl 19

如果您的svn元数据与提交消息(那些http://svn.…./svn/trunk@r12331 (<id>))一起存储,则可以.rev_map.<id>.git/svn/…目录中删除文件.

然后git-svn将在运行下一个命令之前重新创建它们.

编辑:运行时,git gc如果您看到以下行的输出:

$ git gc
warning: reflog of 'HEAD' references pruned commits
warning: reflog of 'refs/heads/master' references pruned commits
warning: reflog of 'refs/remotes/trunk' references pruned commits
Run Code Online (Sandbox Code Playgroud)

然后你知道你需要执行上述技巧.在这种情况下:

rm .git/svn/refs/remotes/trunk/.rev_map.*
Run Code Online (Sandbox Code Playgroud)