我的企業使用svn作爲源代碼控制。在服務器上使用Git進行Subversion本地開發?
我想用我的開發git(分支是如此有用)。
你認爲簽出一個svn項目,在我的開發中使用本地git,沒有問題,然後,用svn提交最終修改?
知道我們這樣工作的時候有什麼特別的嗎?
我的企業使用svn作爲源代碼控制。在服務器上使用Git進行Subversion本地開發?
我想用我的開發git(分支是如此有用)。
你認爲簽出一個svn項目,在我的開發中使用本地git,沒有問題,然後,用svn提交最終修改?
知道我們這樣工作的時候有什麼特別的嗎?
git-svn
對我來說很好,但你必須做好準備,分支(在服務器上)或Subversion外部的一些更高級的功能可能不會流暢。在承諾任何事情之前測試你的用例。
我已經完成了一年多的時間,在適當地使用git之後沒有什麼問題。有幾點需要注意的地方。
第一個建議是總是在dcommit之前執行「git svn dcommit --dry-run」!有時候你並沒有意識到你實際上是在嘗試從不同的分支進行大量的提交,例如git合併後。
二,我通常爲自己從未在主分支上工作。我在一個git分支上工作,然後在我想把它放入svn之前,將它重新分配到master分支上。使用rebase而不是合併,因爲svn需要在每個branch/trunk/tag上有一個「線性歷史記錄」。另外,瞭解rebase的作用以及如何擺脫困境(例如rebase --abort)。在我開始重新裝訂東西之前,我總是先創建一個「備份分支」。
因此,要推到SVN,這是我的工作流程:
git checkout master
git svn rebase
git rebase <my_working_branch>
gitk (to review the changes)
git svn dcommit --dry-run
git svn dcommit
你應該使用git - svn的這一點,它可以在幾乎任何地方,而且運作非常好,即使有非常大的SVN回購。在使用git和svn時,我發現以下工作流程很有用。
git svn clone svn+ssh://pathtorepo localname
git branch workingbranch
git co workingbranch ...
... work in branch
git co master
git merge workingbranch
git svn dcommit
這樣你就可以提交,回滾,分裂,摘櫻桃等你在workingbranch想一切辦法,避免所有的問題顛覆可能有一個複雜的提交歷史。
如果某樣東西的SVN服務器上更改你剛纔下面,讓您掌握符合所有上游提交(保留SVN的線性歷史master分支):
git co master
git svn fetch
git svn rebase
然後你就可以使用正常的git功能來獲取/合併/重新綁定到您的工作分支。