Eclipse EGit修改未推送提交:移除超大文件求助
解决EGit中移除未推送提交里大文件的问题
嘿,我完全懂你现在的头疼——刚上手Git和EGit就碰到大文件卡推送的情况,别担心,这事儿咱们一步步来搞定!
先搞清楚问题根源
你删除了本地的大文件但还是报错,是因为那个300MB的文件已经被包含在未推送的历史提交里了,光删本地文件没用,得把它从那些未推送的提交记录里彻底拿掉。
情况1:大文件只在最新的未推送提交里
这是最简单的情况,直接修改(amend)最新提交就行:
- 先确保你的工作区是干净的:如果有未提交的修改,要么先提交,要么右键Git视图里的「Stash Changes」暂存起来
- 打开Eclipse的Git视图(Window -> Show View -> Other -> Git -> Git History),找到那个包含大文件的最新未推送提交
- 右键这个提交,选择「Amend Commit」
- 在弹出的提交窗口里,找到那个300MB的文件:如果它还在「Changes to Commit」里,右键它选择「Remove from Index」;如果是已经被删除的状态,确保它的变更被勾选(显示为红色的删除标记)
- 确认提交信息可以保留或修改,然后点击「Commit」——这样就覆盖了原来的提交,新提交里就没有这个大文件了
- 现在再尝试推送,应该就能成功了
情况2:大文件在更早的未推送提交里(多个未推送提交)
这种需要用交互式变基(Interactive Rebase)来修改历史提交:
- 同样先保证工作区干净,暂存或提交未完成的修改
- 在Git视图里,右键你的本地分支(比如main),选择「Rebase」->「Interactive Rebase」
- 在弹出的窗口中,找到包含大文件的那个提交,把它前面的操作从「pick」改成「edit」,然后点击「Start」
- 此时Git会暂停在这个提交上,你需要在工作区删除那个大文件,然后右键文件选择「Add to Index」(或者在Git视图里把删除操作加到暂存区)
- 右键选择「Commit」->「Amend Commit」,提交这个修改后的版本(覆盖原来的提交)
- 之后在Git视图的顶部会出现rebase的提示,点击「Continue Rebase」,让变基继续执行
- 如果还有其他提交涉及这个大文件,重复上面的编辑、修改、继续步骤,直到所有未推送提交都移除了该文件
- 最后再尝试推送即可
额外小贴士
- 推送成功后,记得创建一个
.gitignore文件,把这个大文件的路径加进去(比如/path/to/your/largefile.ext),然后提交这个.gitignore,避免以后不小心再提交它 - 如果之后还是碰到类似问题,可以先检查Git的大小限制:有些仓库会设置
core.bigFileThreshold,你可以在Eclipse的Git偏好设置里调整,不过这次既然文件没用,直接移除就好
内容的提问来源于stack exchange,提问作者Iago Duarte
相关产品推荐
相关产品推荐

