【发布时间】:2012-12-19 16:27:31
【问题描述】:
我有一个 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中的另一个分支位置
【问题讨论】: