我一直在問一個學校項目被彈到現有 SVN倉庫提交我的工作。它是一個現有的存儲庫,其中已有一些文件。我不需要這些文件或以前的提交。按現有git倉庫到現有的SVN倉庫
我一直在我的任務與我的一個Git倉庫。我想將我的工作推向SVN存儲庫,而不會丟失任何歷史記錄。我怎樣才能做到這一點?
我一直在問一個學校項目被彈到現有 SVN倉庫提交我的工作。它是一個現有的存儲庫,其中已有一些文件。我不需要這些文件或以前的提交。按現有git倉庫到現有的SVN倉庫
我一直在我的任務與我的一個Git倉庫。我想將我的工作推向SVN存儲庫,而不會丟失任何歷史記錄。我怎樣才能做到這一點?
我會做一個組合。也就是說,首先用git svn克隆svn。然後在這個新的存儲庫中,您從當前的git存儲庫中獲得您的工作。
$ git svn clone http://svn.example.com/project/trunk
$ cd trunk
$ git checkout -b mywork
$ git pull /path/to/current/work/repository/.git master
現在,你有你的mywork
分支在clone從Subversion的工作。時間合併和推動。
$ git checkout master
$ git merge mywork
$ git svn dcommit
Enjoy!
這完美地工作! – 2012-01-14 02:22:29
我試過這個,但我所有的git歷史被推送爲一個svn提交,從而導致提交歷史日誌 – palaniraja 2013-01-07 06:45:19
可以作爲一個先決條件確保您在Git中所有的改變都被應用,或合併到master
分支。
然後,您可以運行git-svn rebase
來合併svn的任何更新,最後再提交git-svn dcommit
以提交更改。
這裏有一個詳細的解釋 - CF - http://www.viget.com/extend/effectively-using-git-with-subversion/
你能解釋一下歷史多一點?你使用'git svn clone'從SVN克隆嗎? – fge 2012-01-08 15:59:13
還沒有。我不確定這是否是解決此問題的正確方法。到目前爲止,我沒有做任何修復它。我看到的所有指南都假設我有一個裸/新的SVN回購。 – 2012-01-08 16:34:33
這是一種方式,你一定不會失去歷史。但還需要了解更多信息:您的初始git是否會在某個時候導入SVN回購的副本?你說你在一個本地git倉庫上工作,你是如何得到這些文件的? – fge 2012-01-08 16:37:39