2009-08-19 103 views
3

使用SVN,我有以下設置:保持同步分支機構,Git的

/tags/ 
/trunk/ 
/branches/ 
/branches/my_feature 
/branches/my_other_feature 

我希望將所有分支機構與主線主幹同步,所以我定期運行爲主幹分支的SVN合併。

但是,我也希望保持所有分支互相同步,以避免衝突,因爲任何給定分支的生命週期可能是幾個月或更長時間。如果我有十幾個分支,我會與SVN產生一個令人討厭的網格,這將是不切實際的。

我的問題是,將使用Git而不是SVN幫助保持分支與另一個和中繼同步?

+0

不知道這是否會有所作爲,但項目的問題 - 你是否與其他許多人一起工作,只有少數人還是獨立項目(暫時)? – 2009-08-19 19:30:17

+0

約半打其他開發者。 – 2009-08-20 16:43:17

回答

2

是的,大部分。所有三種現代DVCS(Git,Mercurial和Bazaar)都可以告訴你上次合併的時間,並且不會嘗試重新合併已經合併的變更集。

如果你正在做一些真的棘手的東西,你可能會遇到一些奇怪的邊緣情況,但即使你這樣做會比使用SVN更好英里

6

它可以幫助您通過重新綁定使兩個分支與主幹同步。

當使用分支my_feature,執行:

git rebase master 

而這將帶來主(主幹)分支的更改my_feature。

關於保持my_feature和my_other_feature同步,如果一個是另一個的後代,則其原理相同。如果my_feature不是my_other_feature的後代,反之亦然,我不知道答案。

0

請注意,您應該使用Git 完全而不是SVN來獲得所需的功能。如果你僅僅使用git作爲前端到SVN(vai git svn),這可能會導致SVN用戶看起來不正確。