git 撤销已经push到远程的提交
- 1. 情景
- 2. 解决方法
- 2.1 git revert
- 2.2 git reset
1. 情景
工作中会有很多时候提交git的时候会提交错东西,而且已经push到远程的话怎么办呢?
2. 解决方法
2.1 git revert
一种常见的方法是使用 git revert 命令来创建一个新的提交,撤销先前的提交。这种方法会保留撤销提交的历史记录,并且不会改变已经推送到远程仓库的历史记录。
以下是使用 git revert 撤销提交的步骤:
1.确定要撤销的提交的哈希值。可以使用 git log 命令查看提交历史并找到要撤销的提交的哈希值。
2.运行以下命令,将指定提交撤销并创建一个新的撤销提交:
git revert hash(这里是要撤销的提交的哈希值)
3.Git 会打开一个文本编辑器,让你输入撤销提交的相关信息。保存并关闭编辑器。esc,然后:wq4.Git 会创建一个新的撤销提交,并将其添加到当前分支的历史记录中。
5.最后,使用 git push 命令将新的撤销提交推送到远程仓库: git push origin 将
<branch-name>
替换为你要推送的分支名称。 这样,你就成功地撤销了之前的提交,并在 Git 仓库中创建了一个新的撤销提交。
结果:
2.2 git reset
使用 git reset 命令可以彻底删除提交和历史记录,但需要谨慎操作,因为这种操作会改变 Git 仓库的状态,并且可能会影响与他人的协作。以下是使用 git reset 命令彻底删除提交和历史记录的步骤:
注意:在执行以下步骤之前,请确保已经备份了重要的提交和数据,并且确保你了解此操作的潜在风险。
1.确定要删除的提交的哈希值。可以使用 git log 命令查看提交历史,并找到要删除的提交的哈希值。
2.确定你想要回退到的目标提交。这是删除提交后仓库中的最新有效状态。可以使用 git log 命令查看提交历史,并找到要回退到的目标提交的哈希值。
3.运行以下命令,使用 git reset 删除提交和历史记录:
git reset --hard 将
<target-commit-hash>
替换为目标提交的哈希值。 这将使仓库的 HEAD 指针和当前分支指向目标提交,同时删除目标提交之后的所有提交和历史记录。注意:这个操作是不可逆的,将永久删除提交和历史记录,请确保你真正想要删除这些提交。
4.如果你想要将这些更改推送到远程仓库,你需要使用 git push 命令以 --force 选项推送: git push origin --force 将
<branch-name>
替换为你要推送的分支名称。
注意:由于这种操作会改变 Git 仓库的历史记录,因此使用 --force
选项可能会对其他团队成员造成问题,请确保与团队中的其他成员协商一致,并确保已备份重要数据。
使用 git reset 命令彻底删除提交和历史记录是一项高级操作,慎用为好。在执行之前,请确保你完全了解操作的影响,并在必要时与其他团队成员进行讨论和备份。