关于git:回滚到上一个提交-适用于MAC的Github(恢复已经在进行中)

Rollback to Previous Commit - Github for MAC (a revert is already in progress)

我想我在这里搞砸了。

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

在按下"回滚"之前,我已完成当前所做的更改,因为我不想丢失这些更改。提交(不推送到远程)后,我回滚到了旧的提交。 (请注意,在我回滚的提交和我刚刚提交的提交之间有很多提交)。

一切正常,我的代码恢复为该提交。该提交中的功能也有问题,因此我决定返回到我最近的提交。

但是,除了回滚到最新提交之外,我不知道该怎么做。但这给了我一个错误。

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

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

我做错了什么? [我不是出于纯真而问,我知道我做错了;)]

正确的做法是什么? [我认为我应该先分支]


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

git cherry-pick --abort-停止进行中的任何樱桃选择

git branch -va-将向您显示指针的当前位置

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

git stash-如果仍然存在任何修改的内容

git reset --hard your_local_branch github/remote_branch-使本地分支反映远程状态的状态。显然,如果您当前的分支将指向与远程相同的提交,则无需重置。如果您处于分离的HEAD状态(git状态将告诉您),然后返回到正常状态,只需签出您的本地分支即可。

现在确定您实际想要实现的目标:

I。摆脱错误的提交?

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

git rebase -i HEAD~11

II。恢复错误的提交? -不建议在其他一些提交之后再执行此操作,除非您完全确定以下提交不会触及同一段代码。这将有效地创建一个反向提交(如果行是由错误的提交添加的,则它将被还原删除,反之亦然)

git revert {commit-sha1}

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

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

希望有帮助!