2013-06-05 200 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

希望,這會幫助別人。