在Git中从主分支删除提交记录

11

在更新了一些代码之后,我忘记创建分支,现在我必须回退到初始提交并删除初始提交后的所有提交。工作已经被保存在别处,所以不会有丢失风险。

我使用了 "git reset --hard {SHA}" 命令将代码库重置到需要的版本,但现在所有在初始提交后执行的提交都在等待重新接收以与主代码库同步。

我想删除 2015 年 6 月 10 日至 7 月 2 日之间的所有提交,因为它们不再需要。有没有人知道如何做到这一点?

输入图像描述


你是想从某个远程主机中删除提交吗? - Sam
发布图片链接。 - Jon
如果您想覆盖与您链接的远程,请使用“git push -f”。如果您只想清理任何剩余/引用的提交和对象,请使用“git prune”。 - Sam
2个回答

34

从任何分支中删除远程提交 [Master是一个分支]

如果您向远程服务器提交了某些不应该提交到特定分支的内容,可以使用以下步骤将其删除。

如果分支有您想要保留的更改 - 从第1步开始

如果您不关心更改,只想还原到特定提交 - 从第3步开始

  1. 执行硬重置并使用命令将HEAD重置为要创建分支的提交: git reset --hard {SHA}

    • {SHA}是提交ID
  2. 创建分支并将其发布到服务器(如果跳过此步骤,您可能会丢失工作)

  3. 执行硬重置以将头设置为要保留的提交- git reset --hard {SHA}

    • 这将导致在重置到的提交之后完成的所有提交都将挂起作为传入同步- 不要同步
  4. 使用命令执行强制推送来消除传入的提交: git push -f


9
如果没有其他人使用这个仓库,那么执行git push -f命令,服务器上的内容将被您的内容覆盖。
如果其他人正在使用这个仓库(并且在您进行提交后已经进行了拉取),他们需要在拉取后也进行硬重置(git reset --hard origin/master,假设您在主分支master上)。在这种情况下,我建议使用git revert来简单地撤消您的提交所产生的影响,而不是试图从历史记录中删除它们。

谢谢,强制推送是最后一块拼图。 - polydegmon
谢谢,这个 git reset --hard origin/master 命令删除了我提交的内容。 - abdoulsn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接