更新我的 git 分支,然后在 git-svn 中更改 svn 存储库

Update my git branch followed by svn repository changes in git-svn

我正在使用 'git svn' 从 svn 存储库克隆源代码。 并使用分支来创建新功能。 git 对数图如

S1-S2+S3-S4-S5-S6-S7 (master)
     +B1-B2-...-B9   (new-feature)

最新的svn版本是'S7',最新的本地分支是'B9'。我希望图表像

一样重新定位
S1-S2+S3-S4-S5-S6-S7+     (master)
                    +B2-B9 (new-feature)

我的操作命令:

git checkout master
git svn rebase     # it updated master to S7
git checkout new-feature
git rebase master  

会出现很多空白的space冲突,据我所知是因为B1,B3...B8已经被其他人签入了svn。有没有更聪明的方法让我只保留一些补丁而不只是 space 冲突?这里的 B2,B9 只是例子。事实上,我不知道应该替换或合并或高级跳过哪些补丁。我只知道,一些svn签入与一些Bx补丁重复。

您应该可以在 new-feature 分支上简单地执行 git svn rebase,无需更改为 master iirc。

关于放弃 B2-B9 提交,您可以 e. G。做 git checkout -B new-feature B1 && git cherry-pick B9。这将从 B1 重新创建 new-feature 分支并挑选 B9 提交。或者你做一个像 git rebase -i B1 这样的交互式变基,然后在待办事项列表中删除 B2-B8 的行并离开编辑器。或者你可以做一个非交互式的变基,比如 git rebase --onto B1 B8 new-feature.