paint-brush
如何在 Git 中从远程删除提交经过@timmouskhelichvili
364,068 讀數
364,068 讀數

如何在 Git 中从远程删除提交

经过 Tim Mouskhelichvili2m2022/05/31
Read on Terminal Reader
Read this story w/o Javascript

太長; 讀書

要从远程删除提交,如果您的提交是从顶部连续的,则可以使用 git reset 命令,否则可以使用交互式变基。在本地删除提交后,使用带强制选项的 git push 命令将这些更改推送到远程。
featured image - 如何在 Git 中从远程删除提交
Tim Mouskhelichvili HackerNoon profile picture
0-item
1-item

对于经常使用 Git 的开发人员来说,操纵历史记录是很常见的。事实上,开发人员经常需要从 Git 历史记录中删除提交。幸运的是,Git 提供了许多命令来使此操作成为可能。


让我们开始吧😎。

第 0 步 - 准备

在操作 Git 历史记录之前,请使用git status命令确保您的工作目录没有任何更改。

第 1 步 - 删除本地提交

要从远程服务器删除提交,首先,您需要将它们从本地历史记录中删除。

1.1 对于从顶部连续提交

如果要删除的提交位于提交历史记录的顶部,请使用git reset --hard命令以及HEAD对象和要删除的提交数。


 git reset --hard HEAD~1

此命令将删除最新的提交


 git reset --hard HEAD~3

此命令将删除最新的三个提交


您还可以使用提交的哈希删除最多特定的提交,如下所示:

 git reset --hard <hash>

1.2 对于非连续提交

但是,如果您想删除非连续提交,则需要使用交互式变基。


  • [ ]使用git reflog命令查找包含要删除的所有提交的最后提交哈希。
  • [ ]使用git rebase -i <hash>启动交互式变基。
  • [ ]在编辑屏幕中,找到要删除的提交行并将其删除。
  • [ ]保存退出(可能需要解决冲突)
  • []使用git rebase --continue结束交互式变基,或者通过中止变基重新开始。

第 2 步 - 从远程删除提交

要从远程删除提交,您需要使用git push命令将本地更改推送到远程。


 git push origin HEAD --force


由于本地历史记录与远程历史记录不同,因此您需要使用force选项。

最后的想法

正如您所看到的,Git 可以轻松地从远程服务器删除提交。


但是,在使用带有force选项的git push命令时需要小心,因为如果不小心,可能会丢失进度。


感谢您的阅读!