git 误提交的文件怎么彻底删除?或是有什么最佳实践避免错误提交?

275 天前
 smdbh

我认为的彻底删除是 objects 里对应的文件也被删除,包括本地和远程的。最主要的还是远程目录上文件如何处理 ,自建 git 有的还和数据库绑定,手动操作了服务器上的 git 目录和数据库的不一致,仓库网页就打不开了

1775 次点击
所在节点    git
11 条回复
shentar
275 天前
reset hard
push force
应该是彻底删除。如果你的 commit 还没被同步到其他分支,应该这样就可以了。
liununu
275 天前
1. Rebase -i 去 Drop commits ,再 Force Push 。但是其他人拉过更新,有可能再 Push 上去。
2. 在 .gitignore 里面添加文件或目录之类的
kongkx
275 天前
LeegoYih
275 天前
git reset head~
git push -f
Leon406
275 天前
Vegetable
275 天前
先 drop commit
之后 git gc ,其实本地无所谓,远程自建的 git 也都可以在设置定期 gc ,什么手动操作不存在的

比如 gitlab https://docs.gitlab.com/ee/administration/housekeeping.html
gitea 没找到文档,不过管理后台是有定时 gc 任务的。

github 之类的托管网站自己也会执行,你不用担心这些,只要保证提交记录都清理干净就行
Trim21
275 天前
首先确保对应的 commit 已经都删掉了,不在哪个 branch/tag 的历史里

然后等服务器 gc 。
ysc3839
275 天前
可以用 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 ,但是远程仓库就比较麻烦了
geelaw
275 天前
已经 push 到托管服务的 commit ,客户通常难以控制何时删除——在 GitHub 里,即使 force push 之后某个 commit 已经不可达,使用 commit hash 依然可以访问未被删除的 commit (见 #3 的链接)。

最好的补救措施就是让错误提交的数据无意义。避免错误提交的方式,除了先写好 .gitignore 之外就是不要 git add .,而是复核修改之后再添加(我一般用 GUI 工具)。
lee015
275 天前
这个 bfg cleaner 工具可以彻底删除文件。原来有同事误提交并 push 了一个 dump 文件几个 G ,就是这个工具删除的,删完了看远端仓库大小也恢复正常了。
https://rtyley.github.io/bfg-repo-cleaner/
qwerthhusn
275 天前
本地 reset 加上 force push

远端执行一次 pruge gc 就行了(你要有 git 服务端的管理员权限)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/963536

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX