如何修复我的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
可以像所有这一切发生之前一样工作吗?
答案 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 Book,Visualizing branch topology in git。
希望,这会有所帮助。