我认为的彻底删除是 objects 里对应的文件也被删除,包括本地和远程的。最主要的还是远程目录上文件如何处理 ,自建 git 有的还和数据库绑定,手动操作了服务器上的 git 目录和数据库的不一致,仓库网页就打不开了
1
shentar 2023-08-08 21:53:55 +08:00
reset hard
push force 应该是彻底删除。如果你的 commit 还没被同步到其他分支,应该这样就可以了。 |
2
liununu 2023-08-08 21:55:08 +08:00 via iPhone
1. Rebase -i 去 Drop commits ,再 Force Push 。但是其他人拉过更新,有可能再 Push 上去。
2. 在 .gitignore 里面添加文件或目录之类的 |
3
kongkx 2023-08-08 21:55:29 +08:00 via iPhone 1
|
4
LeegoYih 2023-08-08 21:57:55 +08:00
git reset head~
git push -f |
5
Leon406 2023-08-08 22:05:51 +08:00 1
|
6
Vegetable 2023-08-08 22:14:12 +08:00 1
先 drop commit
之后 git gc ,其实本地无所谓,远程自建的 git 也都可以在设置定期 gc ,什么手动操作不存在的 比如 gitlab https://docs.gitlab.com/ee/administration/housekeeping.html gitea 没找到文档,不过管理后台是有定时 gc 任务的。 github 之类的托管网站自己也会执行,你不用担心这些,只要保证提交记录都清理干净就行 |
7
Trim21 2023-08-08 22:28:40 +08:00
首先确保对应的 commit 已经都删掉了,不在哪个 branch/tag 的历史里
然后等服务器 gc 。 |
8
ysc3839 2023-08-08 22:32:04 +08:00 via Android
可以用 git filter-repo 修改历史提交
https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository 删除后 force push 但是曾经的 commit 不会被删除,需要 gc 才会删除,本地可以手动 gc ,但是远程仓库就比较麻烦了 |
9
geelaw 2023-08-08 22:33:45 +08:00 1
已经 push 到托管服务的 commit ,客户通常难以控制何时删除——在 GitHub 里,即使 force push 之后某个 commit 已经不可达,使用 commit hash 依然可以访问未被删除的 commit (见 #3 的链接)。
最好的补救措施就是让错误提交的数据无意义。避免错误提交的方式,除了先写好 .gitignore 之外就是不要 git add .,而是复核修改之后再添加(我一般用 GUI 工具)。 |
10
lee015 2023-08-09 01:58:33 +08:00 via Android 1
这个 bfg cleaner 工具可以彻底删除文件。原来有同事误提交并 push 了一个 dump 文件几个 G ,就是这个工具删除的,删完了看远端仓库大小也恢复正常了。
https://rtyley.github.io/bfg-repo-cleaner/ |
11
qwerthhusn 2023-08-09 08:44:23 +08:00 1
本地 reset 加上 force push
远端执行一次 pruge gc 就行了(你要有 git 服务端的管理员权限) |