在svn存储库“回滚”后恢复git-svn镜像

时间:2013-06-05 19:48:10

标签: git-svn

如何修复我的git-svn镜像存储库? 它设置为git svn init ...,然后添加了github remote。 cron作业定期执行git svn rebase && git push

一切都很好,直到上游以某种方式“uncommited”来自svn的几个版本,已经被提取到我的git-svn并推送到github。然后上游为svn trunk添加了一些新版本,重用了“uncommited”修订版的修订版号,这破坏了我的同步过程。

当我意识到发生了什么时,我做了git svn reset以持续有效修订并将反向补丁提交给git。

但从那以后,我无法用git svn rebase来进行上游变更,我必须做git svn fetch && git merge trunk,导致可怕的历史。

我能以某种方式告诉git-svn我不会git svn dcommit任何东西,它可以忘记反向补丁提交,所以git svn rebase可以像所有这一切发生之前一样工作吗?

1 个答案:

答案 0 :(得分:0)

我的调查结果:git-svn的rebase函数没有什么神奇之处。它只是git svn fetch后跟git rebase refs/remotes/trunk并引用更新。 在我的情况下,我所有的就是将我的本地跟踪分支ref移动到从提交中获取的最后一个。

git svn fetch
git log -1 refs/remotes/trunk

给了我最新的sha1:ed0fa874ca872bc3a0101ee397f611a537e72c2a

git update-ref HEAD ed0fa87
git reset --hard

有用的资源:Pro GIT BookVisualizing branch topology in git

希望,这会有所帮助。