乐闻世界logo
搜索文章和话题

How can i remove a commit on github

7 个月前提问
5 个月前修改
浏览次数186

1个答案

1

在GitHub上删除提交记录是一个需要谨慎操作的过程,因为它可能会影响到项目的历史和他人的工作。以下是几种常见的删除提交记录的方法:

1. 使用 git rebase 互动式删除提交

这种方法适合删除最近的一些提交记录。

bash
git rebase -i HEAD~N # N是你需要查看的提交数量

这会打开一个互动式的列表,列出了最近的N个提交。在你想要删除的提交前面,将pick替换为drop(或者直接删除那一行),保存并关闭编辑器开始rebase。

2. 使用 git reset 来回滚到某个特定的提交

如果你想要删除的是最近的一系列提交,可以使用git reset

bash
git reset --hard <commit_hash>

这将会将HEAD指向指定的提交,丢弃之后的所有提交。

3. 使用 git push --force 来覆盖远程仓库

无论使用了以上哪种方式,在本地操作完成后,都需要使用强制推送来覆盖远程仓库:

bash
git push origin <branch_name> --force

注意:

  • 使用--force选项可能会覆盖其他协作者的工作,因此在使用之前需要确保这是团队可以接受的。
  • 如果你不是该远端仓库的拥有者或者没有足够的权限,你可能无法强制推送。
  • 永久删除GitHub上的提交记录可能需要更多步骤,例如清理reflog或联系GitHub的支持团队。

例子:

假设我不小心将一个包含敏感信息的文件提交到了远程仓库,并希望删除那个提交记录。我会这么做:

  1. 首先,我会使用git log来找到含有敏感信息的提交前的一个安全的提交的哈希值。
  2. 接着,我会执行git reset --hard <safe_commit_hash>来重置我的本地仓库。
  3. 然后,我会用git push origin master --force将本地的状态强制推送到远程仓库,覆盖掉含有敏感信息的提交。

在操作前,我会通知团队成员我要进行这样的操作,并在操作后检查确保一切都如预期那样工作。我还会检查是否有开放的Pull Requests可能会再次引入这些已删除的提交,如果有,我会与相关的协作者协如何处理这些Pull Requests。

2024年6月29日 12:07 回复

你的答案