我有一个 git svn 回购。我在这里有多个发布分支。我正在准备一个新版本,作为其中的一部分,我想我会从以前的版本中做一个“git rebase”来拉回任何尚未合并的更改。
所以我建立了我的分支......
git branch new_release remotes/svn-branches/new_release
git branch old_release remotes/svn-branches/old_release
然后我做了rebase ...
git checkout new_release
git rebase old_release
# watch it pull a bunch of commits
git svn dcommit
Committing to https://svn.mysvn.net/repo/releases/old_release ...
在我执行“svn dcommit”之后,我差点把裤子弄脏了。它在 Subversion 中冲洗了我的旧版本分支!
为什么远程跟踪分支会因执行 rebase 而发生变化?
我该如何解决我陷入的困境?
编辑:好的,为了让自己出去,我相信我可以做到以下几点:http ://svnbook.red-bean.com/en/1.5/svn.branchmerge.basicmerging.html#svn.branchmerge.basicmerging.undo
由于 new_release 分支上只有少数提交被拉到 old_release,我可以在 SVN 存储库上单独手动恢复它们。不过,我仍然对这里发生的事情感到困惑。
EDITx2:是的,这里有一些验证步骤。
- 设置两个 git 分支远程跟踪到 SVN 分支
- 查看其中一个分支
- 运行
git svn info
并观察 URL 指向 SVN 中的正确位置 - 跑
git rebase <other_branch>
- 再次运行
git svn info
并观察 URL 更改为指向 SVN 中的另一个分支位置