将git反转为上一次提交

将git反转为上一次提交,git,git-commit,git-reset,git-revert,Git,Git Commit,Git Reset,Git Revert,我以前做过20次提交,由于不兼容问题,现在正在破坏我的代码,现在我想将其恢复到该提交。 我陷入困境 重置和恢复 指挥部。谁能告诉我怎样才能把它恢复到原来的状态。我将所有更改推送到master branch,因为我只处理一个分支 简单地git revert HEAD~3,其中3是要还原的提交数与和类似。通过检查提交消息,可以签出到旧的提交。 例: 结帐 git checkout <hash> git签出 或 git还原 在推动之前,您需要解决冲突。为此,您需要恢复或签出到您的特定

我以前做过20次提交,由于不兼容问题,现在正在破坏我的代码,现在我想将其恢复到该提交。 我陷入困境

重置和恢复


指挥部。谁能告诉我怎样才能把它恢复到原来的状态。我将所有更改推送到master branch,因为我只处理一个分支

简单地
git revert HEAD~3
,其中3是要还原的提交数

与和类似。通过检查提交消息,可以签出到旧的提交。 例:

结帐

git checkout <hash>
git签出

git还原
在推动之前,您需要解决冲突。为此,您需要恢复或签出到您的特定提交,“git pull origin master”将使您的本地存储库与远程分支同步。它将创建一组需要手动解决的冲突。然后,只有您可以推送更改,因为它现在是同步的。否则,主服务器将始终领先于本地的旧提交

git revert HEAD~20
将逐个还原最后20次提交

但是,您可能只需要一次恢复提交,也可以这样做

git revert --no-commit HEAD~20..
获取一个恢复提交,然后恢复20个最后提交,以及

git commit

提交,提交提交。如果这是您的个人项目,即在此期间没有其他人从
master
中提取,我建议重置或重定基址,而不是还原(因此会创建新的提交)

如果你不在乎那20个提交所引入的东西,你只是想摆脱它们(这就是我对你问题的理解),那么我会同意

git复位——硬头~21

然后
git push-f origin master

如果你真的关心20个提交中的19个,并且你确信他们引入的更改与“破坏一切”的更改完全无关,我会选择

git-rebase——交互式头~21

将列出所有20个提交。 将
拾取
更改为
在“有罪”提交和保存前放下
。这将从历史记录中删除该提交。 处理合并冲突(如果有)并继续重新设置基础。
完成所有操作后,您将需要强制推送,因为这也会更改分支历史记录。

可能的副本,但签出将不允许我将更改推送到源位置。它说,更新被拒绝是因为推送的分支提示位于其遥控器的后面。如果您是唯一一个在该项目上工作的人(没有其他人从主控器中提取),那么您可以执行强制推送<代码>git推送-f原始主机
git revert --no-commit HEAD~20..
git commit