如何通过终端删除 Github 中的旧提交?

如何通过终端删除 Github 中的旧提交?

我有一个存储库。

如何通过终端删除我的旧提交?我的 SSH 密钥已上传。

(我正在使用 github pages,这就是为什么版本跟踪并不重要,不想浪费 Github 的存储空间)

答案1

删除该.git文件夹可能会导致您的 git 存储库出现问题。如果您想删除所有提交历史记录但保留代码的当前状态,可以非常安全地执行以下操作:

查看

git checkout --orphan latest_branch

添加所有文件

git add -A

提交更改

git commit -am "commit message"

删除分支

git branch -D master

将当前分支重命名为 master

git branch -m master

最后,强制更新你的存储库

git push -f origin master

PS:这不会保留您的旧提交历史。

答案2

你在这里有一个非常好的答案:https://stackoverflow.com/questions/448919/how-can-i-remove-a-commit-on-github

我引用一下

注意:请参阅git rebase -i下面评论中的替代方案——

git reset --soft HEAD^

首先,删除本地存储库上的提交。您可以使用 执行此操作git rebase -i。例如,如果这是您的最后一次提交,您可以 git rebase -i HEAD~2在弹出的编辑器窗口中执行并删除第二行。

然后,使用 强制推送到 GitHub git push origin +master

Git Magic 第 5 章:历史教训 - 还有一些其他内容以获取更多信息(例如,如果您想删除旧的提交)。

哦,如果你的工作树很脏,你必须先做一个git stash ,然后git stash apply再做一个。

希望这对你有帮助:)

====编辑====

实际上,我刚刚重读了我链接的帖子,特别是评论“警告 2”https://stackoverflow.com/questions/448919/how-can-i-remove-a-commit-on-github

从中我了解到,git 似乎会创建一个新的提交并将指针移动到它,而不是在使用强制推送时删除它。也就是说,如果有人已经拥有你的提交的 SHA1,他们仍然可以访问它。所以考虑到这一点,我必须建议你按照 Tomasz Klim 的建议去做。

答案3

  1. 创建新的存储库。
  2. 将所有文件复制到其中。
  3. 销毁旧存储库。

相关内容