问题描述
我目前正在使用SVN作为存储库的项目中工作.在本地,我对不想提交给仓库的代码进行了一些实验".因此,我在SVN工作目录的顶部本地使用git,并对不同的实验"使用多个分支.所以看起来例如像这样.
I currently work on a project in which SVN is used as a repository. Locally, I do several "experiments" with the code that I don't want to commit to the repo. Therefore I use git locally on top of the SVN working directory and use multiple branches for different "experiments". So it looks e.g. like this.
C0 ---- C7 (master)
\
\---- C1 ---- C2 ---- C4 (exp1)
\ \ \
\ \ \---- C3 (exp2)
\ \
\ \---- C5 (exp3)
\
\---- C6 (exp4)
在分支master
上,我希望拥有不受污染的SVN存储库,即C0是SVN存储库修订版x,而C7是SVN存储库修订版x + n.
On branch master
I want to have the untainted SVN repo, i.e. C0 is SVN Repo Revision x and C7 is SVN Repo Revision x + n.
是否可以通过某种方式轻松地将所有exp
分支立即重新建立到C7上,从而使树看起来像下图所示?
Is it somehow easily possible to rebase all the exp
branches onto C7 at once in such a way that the tree will look like the following diagram?
C0 ---- C7 (master)
\
\---- C1' ---- C2' ---- C4' (exp1)
\ \ \
\ \ \---- C3' (exp2)
\ \
\ \---- C5' (exp3)
\
\---- C6' (exp4)
我想使用rebase,因为我不想修改本地SVN Checkout的状态,并且不想在SVN修订版的基础上进行更改.
I want to use rebase since I don't want to modify the state of my local SVN Checkout and want to have my changes built on top of the SVN revisions.
我也对不需要使用Shell就能在SourceTree中工作的解决方案感兴趣.
I'm also interested in solutions that work from within SourceTree without having to use the shell.
推荐答案
您不能一get而就.充其量您可以一个一个地移动每个分支.这是顺序:
You can't get this in one step. At best you move each branch one by one; this would be the sequence:
git rebase --onto master exp1
git rebase --onto c2' c2 exp2
git rebase --onto c1' c1 exp3
git rebase --onto master exp4
关键是要从旧树的每个分支点(例如上面的c2)到新树(例如上面的c2').
The key is to rebase from each branch point in the old tree (e.g. c2 in the above) on to the new tree (e.g. c2' in the above).
这篇关于如何一次重新设置多个分支的基础?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!