我目前正在开发一个SVN用作存储库的项目.在本地,我用代码进行了几次"实验",我不想承诺回购.因此,我在SVN工作目录的顶部本地使用git,并使用多个分支进行不同的"实验".所以它看起来像这样.
C0 ---- C7 (master)
\
\---- C1 ---- C2 ---- C4 (exp1)
\ \ \
\ \ \---- C3 (exp2)
\ \
\ \---- C5 (exp3)
\
\---- C6 (exp4)
Run Code Online (Sandbox Code Playgroud)
在分支上master
我想要有无污染的SVN回购,即C0是SVN Repo Revision x,C7是SVN Repo Revision x + n.
以某种方式很容易地将所有exp
分支重新固定到C7上,使树看起来像下图?
C0 ---- C7 (master)
\
\---- C1' ---- C2' ---- C4' (exp1)
\ \ \
\ \ \---- C3' (exp2)
\ \
\ \---- C5' (exp3)
\
\---- C6' (exp4)
Run Code Online (Sandbox Code Playgroud)
我想使用rebase,因为我不想修改本地SVN Checkout的状态,并希望我的更改建立在SVN修订版之上.
我也对在SourceTree中工作的解决方案感兴趣,而不必使用shell.
是否可以使用git中的所有子分支来重新分支一个分支?
我经常使用分支作为快速/可变标记来标记某些提交.
* master
*
* featureA-finished
*
* origin/master
Run Code Online (Sandbox Code Playgroud)
现在我想rebase -i
master
进入origin/master
,改变/重新提交提交featureA-finished^
之后git rebase -i --onto origin/master origin/master master
,我基本上希望历史是:
* master
*
* featureA-finished
* (changed/reworded)
* origin/master
Run Code Online (Sandbox Code Playgroud)
但我得到的是:
* master
*
* (same changeset as featureA-finished)
* (changed/reworded)
| * featureA-finished
|.* (original commit i wanted to edit)
* origin/master
Run Code Online (Sandbox Code Playgroud)
有没有办法绕过它,还是我坚持在新的重新提交的作品上重新创建分支?