回滚到Previous Commit - 用于MAC的Github(恢复已在进行中)

时间:2012-10-12 11:48:23

标签: git version-control github github-for-mac

我想我已经搞砸了。

我对上一次提交添加新功能的代码进行了一些更改,并意识到其他一些代码现在表现得很奇怪。我决定回滚到旧的提交(也推送到远程),以便测试当时该功能是否正常工作。

在我按下Rollback之前,我提交了我目前所做的更改,因为我不想丢失它们。提交后(不推送到远程),我做了回滚到旧提交。 (请注意,在我支持的提交和刚才提交的提交之间有很多提交。)

一切正常,我的代码恢复了该提交。该功能在该提交中也行为不端,所以我决定回到我最近的提交。

但是,除了回滚到最新提交之外,我不知道如何做到这一点。但它给了我一个错误。

error: a cherry-pick or revert is already in progress
hint: try "git cherry-pick (--continue | --quit | --abort)"
fatal: revert failed
(32768)

现在,似乎大多数事情都回来了,但当前版本的代码与我上次提交的代码不同。介于两者之间。 =(

我做错了什么? [我不是说天真无邪,我知道我做错了;)]

这样做的正确方法是什么? [我想我应该先分支]

1 个答案:

答案 0 :(得分:22)

我不知道Mac回滚的github是什么,但似乎你最好使用命令行来解决手头的问题:

git cherry-pick --abort - 停止任何正在进行的挑选

git branch -va - 会告诉你现在指针在哪里

确保您的工作目录是干净的: git status - 不应显示任何已修改或暂存的文件

git stash - 如果有任何修改仍然存在

git reset --hard your_local_branch github/remote_branch - 使本地分支反映远程端的状态。显然,如果当前分支指向与远程相同的提交,则不需要执行重置。如果你处于分离的HEAD状态(git状态会告诉你),那么回到正常状态只需检查你当地的分支。

现在决定你真正想要实现的目标:

予。摆脱错误的提交?

使用交互式rebase并删除有错误提交的行,然后强制推送到github上的远程仓库(说错误提交发生在10次提交之前)

git rebase -i HEAD~11

II。恢复错误提交? - 不建议在其他提交之后执行此操作,除非您完全确定以下提交未触及相同的代码。这将有效地创建一个反向提交(如果通过错误提交添加了行,它将通过恢复删除,反之亦然)

git revert {commit-sha1}

III。修改错误的提交?使用交互式rebase,但指示它停止错误提交以进行修改。当它确实停止编辑更改并继续重新定位时,然后强制推送到远程分支(使用解决方案I中的rebase命令)

完成任务后,请使用git stash pop将更改恢复。

希望有所帮助!

相关问题