2012-10-05 104 views
27

我正在做一個開發項目。git svn - 我可以同時使用git和svn嗎?不需要git和svn之間的交互

該公司使用SVN,所以對於主commitcheckout應通過SVN來完成。

但是,我不喜歡SVN並且是git用戶。因爲只有當我認爲我的代碼好,我會承諾公司SVN,我想用我自己的歷史門將git

我不需要用git來做SVN的事情,反之亦然。

我可以同時使用SVN和git來控制我的同一代碼嗎? 他們之間沒有互動。

+1

只要忽略SVN的'.git'文件夾和Git的'.svn'文件夾,你應該沒問題。或者你在問如何基本上同時從兩個方向推/拉? – Blender

+0

但是爲什麼? git在另一端的svn倉庫中工作得很好,爲什麼不能從中受益呢? –

+3

當然可能,並且對你的同事有一個公平的舉動,而不是推動未完成的改變。然而,在那裏隱藏着一個巨大的危險:你會傾向於向公司存儲庫提交很少的提交。這意味着與同事相比,你會產生更多的衝突。在使用Subversion時,使用頻繁的提交行爲是有意義的。我必須學習這個難題:-) – arkascha

回答

32

您可以使用git svn clone <SVN repo URL>將Subversion存儲庫克隆到您的機器。該代碼將作爲git存儲庫提供。你可以在那裏做你的工作,並按你的意願進行本地提交。有一個命令行選項可以獲得「淺」結帳,而不是整個常用的倉庫。我忘記了它是什麼。

隨時,您要運行相當於svn update,做一個git svn rebase。這會獲取新的提交,在您上次同步後簽入SVN,然後將更改重新綁定到新提示上。

當您準備好提交時,請執行git svn dcommit。這將把你所有的新提交一個接一個發送給svn。你也可以將你的本地提交壓縮到一個單獨的文件中,然後通過首先執行本地rebase然後svn dcommit來發送它。這應該在初始分支上完成(通常爲master)。

事實上,你從顛覆中檢出,然後在git本地工作意味着它們之間存在「交互」,所以你最後的語句無效。

+1

對本應作爲評論發佈的答案進行了編輯。我已經恢復了編輯並在此評論中增加了逐字添加 - 通常認爲將所有更改作爲單個修訂提交是一種不好的做法(例如,請參閱http://stackoverflow.com/questions/107264/how-often -to-commit-changes-to-source-control和http://www.codinghorror.com/blog/2008/08/check-in-early-check-in-often.html)。 –