2012-03-02 231 views
1

我的常規git-svn工作流程是在本地分支上完成我的工作,然後合併到master並從那裏將git svn dcommit記錄到svn中繼上。,如何更改git分支正在跟蹤的svn分支?

但是,在我當前的本地分支(foo)中,我意識到這項工作將會持續一段時間,然後我會很樂意將它提交到主幹,而其他開發者可能在此之前參與其中。我想通過svn分支「支持它」,以便我的工作在服務器上。

我創建從目前的樹幹一個新的svn分支(svnFoo),我基本上要「動」 foo這樣,當我svn dcommit從所有其提交獲取記錄在svnFoo,而不是trunk

這樣做的最好方法是什麼?

回答

1

git rebase是你的朋友在這裏。假設您創建從本地master分支當地foo分支,你已經做了近git svn fetch您的本地Git倉庫知道遠程svnFoo分支,你想要的魔法命令是這樣的:

git rebase --onto remotes/svnFoo $(git merge-base master foo) foo 

這將找到從master分支foo的提交,然後在svnFoo分支的頂部重播所有提交到foo分支的頭部的提交。隨後的git svn dcommit s將提交到Subversion svnFoo分支,而不是中繼。

+0

這樣做了,謝謝! – 2012-03-05 16:54:00