我正在考慮將我的服務器上的svn存儲庫轉換爲git,但我不確定對我有什麼好處,因爲我已經使用了SmartGit/hg,它創建了一個本地git倉庫,並已提交所有本地git提交到svn。從git-over-svn遷移到GIT的好處
據我所知,在這裏我沒有真正需要遷移到git。
那麼對我和我的同事來說,只有SmartGit/hg會有什麼好處?
我正在考慮將我的服務器上的svn存儲庫轉換爲git,但我不確定對我有什麼好處,因爲我已經使用了SmartGit/hg,它創建了一個本地git倉庫,並已提交所有本地git提交到svn。從git-over-svn遷移到GIT的好處
據我所知,在這裏我沒有真正需要遷移到git。
那麼對我和我的同事來說,只有SmartGit/hg會有什麼好處?
我對SmartGit並不熟悉,但我知道使用git作爲SVN客戶端時的常見缺點,所以我會談論這一點。
切換到遠程git存儲庫將允許您有效地使用重工作流程branch
和merge
。
這是什麼意思?
在SVN中,你通常有一個單獨的分支,所有的工作都被提交;另一方面,git可以更輕鬆地進行分支和合並,從而可以有效地使用具有多個分支的工作流程。
例如,您可以使用master
分支和development
分支。只有穩定版本才合併到master
,而開發過程發生在development
分支上。此外,您可以創建feature
分支,這些分支綁定到特定主題,並且所有提交均在此feature
分支上完成,直到主題完成;那麼您可以將由該功能引入的更改合併到development
分支中,並稍後作爲master
分支的發佈。
爲什麼不可以使用SVN信息庫?
Git處理合並與SVN不同;在Git中,merge是一個提交,它有多個父提交。這在SVN中是不可能的,在SVN中,每個提交都有一個父代,從來沒有更多。
所以,如果你將合併提交推送到SVN倉庫,合併歷史將會丟失。雖然您將保留合併歷史記錄,但您的同事只會看到一個重大提交,它引入了您的合併分支提交的所有更改。你失去了信息。
這就是爲什麼當與SVN存儲庫交互時,建議只使用rebase
而不是merge
的原因。
這是使用git與遠程git存儲庫而不是SVN之一的一個優點。你可以找到更多,如果你搜索。
純Git的解決方案,您會得到以下好處
鏈
我不能使用SVN這個開發分支嗎?如果我保留分支,我會保留關於單個提交和父母的信息,對嗎? – rubo77
@Zeeker「在SVN中,合併一個分支然後繼續進行分支並不容易」 - WTF?! RTFM! '--reintegrate'並不禁止在1.7版本中使用分支(與1.6相反),1.8+甚至更簡化了同步合併 –
@LazyBadger我承認我對SVN和Git並不熟悉,我的最後關於這個話題的信息是它不容易完成,但它完全有可能已經改變並且不再是真實的。儘管如此,git提供了一種比SVN更容易合併和分支的方法。 –