更新我的git分支,然后是git-svn中的svn存储库更改
问题描述:
我使用'git svn'从svn存储库克隆源代码。 并使用分支来创建新功能。 像更新我的git分支,然后是git-svn中的svn存储库更改
S1-S2+S3-S4-S5-S6-S7 (master)
+B1-B2-...-B9 (new-feature)
的git的日志图中的最新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
它将出现许多空白冲突,因为我知道那是因为B1,B3 ...... B8已经在SVN检查由其他人。有更聪明的方法让我保留一些不仅仅是空间冲突的补丁吗?这里的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
。
我编辑了我的问题,问题是我不知道应该替换或跳过哪个补丁。 –
好吧,它们不是**重复的,否则提交会在rebase中为空,并自动跳过。不同的空白不是重复的。那么,您何时/如何确定/确定哪些提交跳过?如果有差异,肯定不能自动完成。 Git是一个愚蠢的内容跟踪器。空白可能很重要,所以Git必须知道文件的格式以“知道”空白区别不重要。即使它在技术上没有意义,它仍然对人眼有意义。 – Vampire