git svn rebase -i搞砸了。可以修复吗?

时间:2013-08-27 21:14:45

标签: git-svn

我有两个本地git分支跟踪两个远程svn分支。

我的设置方式是master正在跟踪svn trunk并且'branch'跟踪了svn'branch'。

最近我在当地的“分支机构”做了一些本地工作,由于我加入了速度

git svn rebase -i HEAD~2

而不是

git rebase -i HEAD~2。

执行两次本地提交后,在命令行中

然后,git做了一些奇怪的事情,它从svn trunk获取并重新提交了我的本地“分支”。当我回到master并尝试git svn rebase时,那些合并到'branch'的提交在master树中丢失了。这意味着不仅两个分支之间的合并被破坏,而且基本上我不能在master上工作,因为它不与trunk同步。有没有办法解决这种情况?

1 个答案:

答案 0 :(得分:0)

您可以使用reflog撤消rebase。使用git reflog查找分支在运行rebase之前指向的提交。然后使用git reset --hard <COMMIT-ID>将分支切换回来。

警告:

在执行此操作之前,请注意git stash任何本地更改(否则它们将会消失)。此外,如果您在拙劣的rebase之后进行了其他提交,则必须手动拯救它们(可能使用git cherry-pick)。