2013-08-27 29 views
2

我有两个本地git分支,跟踪两个远程svn分支。git svn rebase -i搞砸了。它可以修复吗?

我有一些主设备跟踪svn主干和'分支'跟踪svn'分支'的设置。

最近我在做对当地 '分支' 和一些地方的工作,由于我进入

混帐SVN变基-i HEAD速度〜2

代替

的git的变基-i HEAD 〜2。

在命令行

做两所本地提交

混帐做了一件奇怪的在此之后,它取出并衍合的提交从SVN主干到我的地方“分支”。当我回到主人身边,并且尝试了git svn rebase时,那些合并到“分支”中的提交在主树中丢失了。这意味着不仅两个分支之间的合并被破坏,而且基本上我不能在master上工作,因为它不与trunk同步。有没有办法纠正这种情况?

回答

0

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

警告:

小心git stash在此之前的任何本地更改(否则他们将会消失)。另外,如果你在拙劣的rebase之后进行了其他提交,你将不得不手动解救它们(可能使用git cherry-pick)。

+0

这是第一件要做的事情。然而,在做这个和git svn rebase之后,我得到了完全相同的结果,这让我认为git-svn状态有所改变。 –

+0

@ Psy-Fi:git-svn没有太多自己的状态。它唯一的状态是它创建的远程跟踪分支的状态(每个SVN分支一个,可以通过例如'git branch -a' unter'remotes /'看到)。你能编辑'git branch -avv'的输出到问题中吗? – sleske

+0

我做了理智的事情,毕竟我停止使用git合并svn分支,因为它也被建议避免在官方文档中这样做。我仍然会使用git,但严格来说,在同一分支上进行本地提交。不幸的是,我不得不删除我的本地git存储库,因为我使用它来进行真正的工作,并且无法承受任何灾难。不知道这个问题是否可以被认为是有效的。 –