git-svn rebase 出了可怕的错误

标签 git git-svn

有没有办法重做 git-svn rebase。或通过它重置任何效果。

在我的 +8000 提交 git-svn 存储库中, merge 分支后出现问题。我的本地“主人”在完整的主干日志附近没有反射(reflect)任何东西。

并运行 git svn rebase 正确地获取新的修订,然后尝试应用看起来像是来自 svn 主干的所有 8000 多个提交。

有没有办法重置并确保 master 的 HEAD 指向 trunk 的 HEAD?

最佳答案

术语有些困惑:“HEAD”与“head”或“tip”不同。 “HEAD”指的是当前 checkout 的分支。

无论如何。 :)

如果你真的想扔掉你所做的一切,并把你的 master 返回到一个 trunk 的精确副本,那很简单。假设 master 已 checkout :

git reset --hard trunk

警告: reset --hard 会破坏未提交的更改。

如果您想进一步挽救以前的工作,让我向您简要介绍一下 git 的众多安全带之一:reflog。例如,如果你说

git log -g master

你会看到一个列表,好吧,master 的“保存点”。我们将其称为 git land 中的 reflog。每当操作更改分支时,它都会在该分支的 reflog 顶部添加一个新的保存点。换句话说,如果你做的最后一个操作把你的分支搞得一团糟,你可以把你的分支恢复到那个操作之前的状态:

git reset --hard master@{1}

@{1} 在您查看 reflog 后会更有意义。 git 还支持更华丽的语法,例如 @{10.minutes.ago}

还有很多事情是可能的,但这应该足以暂时解决问题。

关于git-svn rebase 出了可怕的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1789887/

相关文章:

Git:如何将所有内容完全恢复到先前提交的状态?

git - 如何更快地添加要提交的文件?

git - 如何删除 git-svn 中的空目录?

visual-studio - 带有 Git 的 TeamCity Visual Studio 插件

git - 如何根据每次提交的日期将两个分支 merge 为一个分支?

svn - 通过 MacPorts 安装后在 Mac OS X Leopard 上找不到 git-svn

git - 一个 svn 存储库已移至 git。我正在使用 git

linux - 如何从我的 Linux 机器上完全卸载 git

Git-svn克隆错误: "fatal: Not a valid object name ' refs/remotes/tags/Tag With Spaces'"

git - "git reflog show <ref>"应该显示什么?