我最近在我的存储库中有一个损坏的对象,指向我的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
5a5dc92cd3083960fb4828ae387a32cda0554fa8指的是损坏的对象,我想说git-svn不要考虑这个对象而是另一个,但我不知道如何破解这个。
如果有人知道git-svn在哪里/如何在内部存储这个值,那就太棒了。
谢谢
答案 0 :(得分:18)
如果您的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
然后你知道你需要执行上述技巧。在这种情况下:
rm .git/svn/refs/remotes/trunk/.rev_map.*