【发布时间】:2012-06-17 20:02:24
【问题描述】:
在尝试 rebase 到 master 后,我的分支弄得一团糟。
在我的提交历史中,我进行了相当多的重构(重命名和移动),以及删除类。而且我不应该推送到远程存储库。 (我知道,从那以后我就在踢自己)。
但是,已经完成的事情已经完成。现在,由于 rebase 重写了历史记录和提交(?)(通过 rebase 期间的冲突解决),我无法重置为更早的提交 HEAD~2 重新开始,所有提交都被重写并且提交错误。
我可以从 git 获取 HEAD~2 的快照,有没有办法将快照合并(变基)回我的分支,回滚更改,然后重新开始?
提前致谢!
大卫
更新,从我们内部的 git 网页,我可以看到之前的提交:
commit 6f577850231fed07eebdacd3bc5862f84356d803
tree 8be1d60056697bc1b8d7284c4e85a6d1738ac3e2 tree | snapshot
parent 1ca61d4dd69b7be649906834d44bb7fec390153d commit | diff
我可以通过单击“快照”链接在 gz 中下载快照。 但是,当我尝试这样做时:
git checkout -b newBranch 6f577850231fed07eebdacd3bc5862f84356d803
我明白了:
fatal: reference is not a tree: 6f577850231fed07eebdacd3bc5862f84356d803
如果我跑:
git checkout -b --force newBranch 6f577850231fed07eebdacd3bc5862f84356d803
我明白了:
fatal: git checkout: updating paths is incompatible with switching branches.
我猜这个提交只驻留在远程存储库中?那么如何在 git 中签出呢?
解决方案: 这个 SO 答案是我的问题的解决方案:Undoing a git rebase
【问题讨论】:
-
I made a mess on my branch...和你的问题......真的吗?只有一长行文字?我绝对不会读那个,你真的需要学习如何组织。