我有一个存储库。
如何通过终端删除我的旧提交?我的 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
- 创建新的存储库。
- 将所有文件复制到其中。
- 销毁旧存储库。