2013-06-05 573 views
1

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

一切都很好,直到上游以某种方式“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

我的调查结果:在git-svn的rebase函数中没有什么不可思议的。这只是一个git svn fetch,然后git rebase refs/remotes/trunk和refs更新。 在我的情况,我所有的只是将我的本地跟踪分支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

希望,这会帮助别人。