如何使用 git 撤消已推送的提交?

9 浏览
0 Comments

如何使用 git 撤消已推送的提交?

我有一个项目在一个远程仓库中,它与本地仓库(开发)和服务器仓库(生产)同步。我已经做了一些提交的更改,已经推送到远程和从服务器上拉取了。现在,我想撤销这些更改。所以我可以用git checkout到这些更改之前的提交中,并提交新的更改,但我猜这样重新推送它们到远程会有问题。有任何建议应该怎么做吗?

admin 更改状态以发布 2023年5月24日
0
0 Comments

一种不留下 "撤销" 痕迹的解决方案。

注意:如果有人已经拉取了你的更改,请勿执行此操作(我个人只在个人仓库上使用此操作)。

运行:

git reset 

这将重新检出所有更新,使得 Git 状态将列出所有已更新的文件。

然后 "进行你的工作" 并重新提交更改(注意:这一步是可选的)。

git commit -am "blabla"

此时,本地树与远程树存在差异。

git push -f  

将强制让远程分支接受此推送并删除之前的推送(不强制指定远程名称和分支名称不是必需的,但建议这样做以避免更新所有具有更新标记的分支)。

!!注意:某些标签可能仍然指向已删除的提交!!如何删除远程标签

0
0 Comments

你可以使用以下方法撤销单个提交:

git revert 

这将创建一个新的提交,撤销您指定的提交所做的更改。请注意,它只会撤销特定的提交,而不是其后的提交。如果您想撤销一系列提交,可以像这样操作:

git revert ..

它将撤销以及包括在内的所有提交。在一些git版本上,它还会撤销,因此请仔细确认是否已经撤销了该提交。您可以使用g reset --hard HEAD~放弃最近的撤销提交(它撤销了最老的提交)。

要找到提交的哈希值,您可以使用git log命令。

查看git-revert手册页获取有关git revert命令的更多信息。此外,查看此答案获取有关撤销提交的更多信息。

0